2013-09-01 82 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