2010-04-15 107 views
2

这可能是一个愚蠢的问题,但即时开始学习铁路这就是为什么我问这个问题。Rails模型属于模型,属于模型,但我想用另一个名字

我有一个名为“用户”的模型,它处理我社区中的所有用户。现在我想为每个用户添加一个留言簿。所以,我创建了一个名为“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

你会得到任何错误? – 2010-04-15 20:34:29

+0

这是一个未定义的方法 – Lisinge 2010-04-15 20:36:52

回答

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 
+0

会尝试这一点。谢谢 – Lisinge 2010-04-15 20:43:17

+0

当@user = User.find 1,然后@ user.guestbook – Lisinge 2010-04-15 20:48:21

+2

我得到了“无法将类转换为条件”错误引用了'class_name'的值。尝试更新的代码。 – 2010-04-15 22:21:33

相关问题