[英]How to get information from child table
我有一個具有has_many :comments
的Users
模型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.