我的模特中有以下关系:
class User < ActiveRecord::Base
has_one :tutor, dependent: :destroy
has_many :messages
end
class Tutor < ActiveRecord::Base
belongs_to :user
has_many :messages, :foreign_key => 'recipient_id'
end
class Message < ActiveRecord::Base
belongs_to :users
belongs_to :tutors
end
在我的消息索引视图中,我想制作类似于收件箱的内容,其中显示与该消息关联的用户名。我在我的控制台中尝试了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
我基本上想要从username
获取recipient_id
。我错误地设置了吗?我应该加入什么?
答案 0 :(得分: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