1

モデルには次の関係があります。

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ます。これを間違って設定しましたか?ジョインか何かをするべきですか?

4

1 に答える 1

3

モデルのbelongs_to関連付け宣言が正しくありません。Message詳細については、 「属している協会」を参照してください。

したがって、Messageモデルを更新すると問題が解決するはずです。

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

  belongs_to :user 
  belongs_to :tutor
end

次に、次を使用してメッセージのユーザーにクエリを実行します。

Message.first.user
于 2013-09-01T15:11:59.790 に答える