2013-09-01 79 views
1

我在我的模型以下關係訪問的用戶名。我想在我的控制檯做Message.first:從另一個模型

Message.first Message Load (0.3ms) SELECT "messages".* FROM 
"messages" ORDER BY "messages"."id" ASC LIMIT 1 => #<Message id: 1, 
subject: "some subject", body: "and some body", created_at: 
"2013-09-01 13:09 :57", updated_at: "2013-09-01 13:09:57", user_id: 1, 
recipient_id: 2> 

如果我做Message.first.users,我得到:

Message.first.users Message Load (0.3ms) SELECT "messages".* FROM 
"messages" ORDER BY "messages"."id" ASC LIMIT 1 => nil 

我基本上是想從recipient_idusername。我錯誤地設置了這個嗎?我應該做一個加入或什麼?

回答

3

您的belongs_to關聯聲明Message型號不正確。有關更多詳細信息,請參閱「The belongs_to Association」。

所以,更新Message模型應該解決這個問題:

class Message < ActiveRecord::Base 
    # use singular :user and :tutor here 

    belongs_to :user 
    belongs_to :tutor 
end 

那麼你會使用查詢郵件的用戶:

Message.first.user 
+0

確定這個工程Message.first.user。然而,正如我(很差)解釋,我期待從'recipient_id',這是另一個用戶的用戶名。這樣做是不正確的:'User.find(Message.first.recipient_id,select:'first_name,last_name')'? – DaniG2k

+0

所以,我知道這看起來很可怕,但我認爲這就是我所指的:'User.find(Tutor.find(Message.first.recipient_id))' – DaniG2k

+0

實際上,這似乎不能正常工作。然而,這確實如此:'Tutor.find(message.recipient_id).user' ....哇,這是一個混亂... – DaniG2k