Rails模型属于属于模型的模型,但我想使用另一个名称

时间:2010-04-15 20:27:11

标签: ruby-on-rails ruby model

这可能是一个愚蠢的问题,但我刚刚开始学习铁路,这就是为什么我在问这个问题。

我有一个名为“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

提前致谢!

1 个答案:

答案 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