2010-04-15 177 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

相關問題