2010-01-06 53 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