这可能是一个愚蠢的问题,但我刚刚开始学习 Rail,这就是我问这个问题的原因。
我有一个名为“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
但这对我不起作用。我不知道我做错了什么,如果有更简单的方法,请告诉我。
请注意,我已为其创建了一些迁移,如下所示:
创建用户访客簿:
t.integer :user_id
创建_guestbook_posts:
t.integer :guestbook_id
t.integer :from_user
t.string :post
提前致谢!
最佳答案
我认为应该是:
#user
has_one :guestbook, :class_name => "UserGuestbook"
#user_guestbook
belongs_to :user
has_many :posts, :class_name => "GuestbookPost"
#guestbook_posts
belongs_to :user_guestbook
要获取属于单个用户
的所有帖子,您可以将此行添加到用户
的模型
has_many :posts, :through => :guestbook
然后,调用此:
@user.posts
关于ruby-on-rails - Rails 模型属于属于模型的模型,但我想使用另一个名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2648743/