从其他模型访问用户名

时间:2013-09-01 15:05:52

标签: sql ruby-on-rails ruby-on-rails-4

我的模特中有以下关系:

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。我错误地设置了吗?我应该加入什么?

1 个答案:

答案 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