簡體   English   中英

如何從子表中獲取信息

[英]How to get information from child table

我有一個具有has_many :commentsUsers模型has_many :comments每個注釋都將current_user記錄到commenter列。

如何在視圖中調用@ commenter.username並顯示評論者的用戶名?

當前在@commenter = User.find("2")中使用: @commenter = User.find("2")將提取正確的信息。 我想使用一些類似的東西: @commenter = User.find_by_id(:commenter)

從評論中,聽起來像您有此Comment模型:

class Comment < ActiveRecord::Base
  belongs_to :user
end

評論模型表示用戶頁面上的評論 ,其中用戶模型定義為:

class User < ActiveRecord::Base
  has_many :comments
end

comments表上還有一個commenter列,用於存儲發布評論的用戶(在另一個用戶的頁面上)。

首先,我建議對此列而不是commenter使用commenter_id ,因為這是存儲任何類型的ID的約定。

假設您在comments表上有commenter_id列,那么您將定義第二個關系,如下所示:

class Comment < ActiveRecord::Base
  belongs_to :user
  belongs_to :commenter, class_name: "User", foreign_key: :commenter_id
end

commenter關系定義了評論的用戶,而不是評論所在頁面的用戶。

對於這種關系的另一面,請更新您的User模型:

class User < ActiveRecord::Base
  has_many :comments
  has_many :page_comments, class_name: "Comment", foreign_key: :commenter_id
end

在這里, page_comments定義了該用戶在其他用戶頁面上發布的評論。

然后,如果您有@comment ,則可以使用以下簡單方式獲取評論者的姓名:

@comment.commenter.name

只要正確設置列名和模型,處理這樣的信息就應該非常簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM