2010-01-06 54 views
6

这可能是一个愚蠢的问题,但我似乎无法找到一个好的答案。我想知道回顾对象所属模型的最佳方法。Rails:回头看模型对象属于

例如:

class User < ActiveRecord::Base 
    has_many :posts 
end 

class Post < ActiveRecord::Base 
    belongs_to :users 
end 

因此,要获得用户的帖子,我可以使用user.posts,但要得到这个职位的用户,我不能做反向:post.user

如果我为Post模型添加了一个“用户”方法,它可以工作,但它似乎不是最好的方法。

class Post < ActiveRecord::Base 
    belongs_to :users 

    def user 
    User.find(self.user_id) 
    end 
end 

如果你看到这篇博客http://www.fortytwo.gr/blog/18/9-Essential-Rails-Tips为例,你可以看到,作者用post.user.username,不开箱的工作,以及:包括=> [:用户],即使使用Post模型中的“用户”方法也不起作用。

我知道这是基本的,所以感谢您的耐心。我只想知道完成这种关系的最佳方式。

我的主要目标是写 “认定” 使用嵌套包括,其指回用户像这样:

交= Post.find(:所有,:包括=> [:用户])

当我尝试这样做时,我得到“ActiveRecord :: ConfigurationError:没有找到名为'user'的关联;也许你拼错了它?”

非常感谢。

回答

8

我有点新的Rails,但这应该自动工作...

啊 - 你命名后的父类为belongs_to :users;但由于它只属于一个用户,所以Rails期望belongs_to :user(或当然,belongs_to :users, :class_name => "User")。

即:

class Post < ActiveRecord::Base 
    belongs_to :user 
end 

应该做的工作。

+0

谢谢。这是我所问过的最愚蠢的问题。不敢相信我没有看到。我想知道为什么它甚至可以工作,如果你把它复数... – Shagymoe 2010-01-06 16:42:35

0

属于一个模型应该是单数。 like

belongs_to :user