这可能是一个愚蠢的问题,但我刚刚开始学习铁路,这就是为什么我在问这个问题。
我有一个名为“User”的模型,它处理我社区中的所有用户。现在我想为每个用户添加留言板。所以我创建了一个名为“user_guestbook”的模型,并将其插入到新模型中:
belongs_to :user
并将其转换为用户模型:
has_one :user_guestbook, :as => :guestbook
我接下来要做的是添加一个新模型来处理留言簿中的帖子。我将其命名为“guestbook_posts”并将此代码添加到新模型中:
belongs_to :user_guestbook
然后进入user_guestbook模型:
has_many :guestbook_posts, :as => :posts
我想要获得的是能够通过以下方式获取特定用户的所有帖子:
@user = User.find(1)
puts @user.guestbook.posts
但它对我不起作用。我不知道我做错了什么,如果有更简单的方法,请告诉我。
请注意,我已为其创建了一些迁移,如下所示:
create_user_guestbook:
t.integer :user_id
create_guestbook_posts:
t.integer :guestbook_id
t.integer :from_user
t.string :post
提前致谢!
答案 0 :(得分:3)
我认为应该是:
#user
has_one :guestbook, :class_name => "UserGuestbook"
#user_guestbook
belongs_to :user
has_many :posts, :class_name => "GuestbookPost"
#guestbook_posts
belongs_to :user_guestbook
要获取属于单个user
的所有帖子,您可以将此行添加到user
的模型中
has_many :posts, :through => :guestbook
然后,请致电:
@user.posts