0

対応するテーブルを持つ Messages および User モデルがあります。
Messages テーブルには、user_from や user_to などのフィールドがあります。

送信者と受信者のユーザー オブジェクトにアクセスできるようにモデルを関連付ける方法:

message.user_from.name
message.user_to.id
...

ありがとう。

4

3 に答える 3

2

次のようにメッセージ モデルを更新する必要があります。

belongs_to :user_from, :class_name => "User"
belongs_to :user_to, :class_name => "User"

これにより、ID を介してユーザー テーブルにリンクするメッセージ テーブルの下に対応するフィールドが作成されます。

于 2012-06-18T10:32:16.087 に答える
1

ユーザー ID を外部キーとしてメッセージ テーブルに格納する場合、関連付けに同じ名前を使用することはできません。しかし、次のように言うことができます。

class Message
  belongs_to :from, class: 'User', foreign_key: :user_from
  belongs_to :to, class: 'User', foreign_key: :user_from
end

Railsでは、外部キー列名として使用するのがベストプラクティス<assiciation_name>_idです。その後、単純に使用できます

class Message
  belongs_to :user_from, class: 'User' # foreign_key: :user_from_id by default
  belongs_to :user_to, class: 'User' # foreign_key: :user_to_id by default
end
于 2012-06-18T10:38:17.873 に答える
0

私の場合の完全な解決策は次のとおりです。

  belongs_to :sender, 
    :class_name => "User", 
    :foreign_key => "sender_id", 
    **:primary_key => "uid"**

  belongs_to :recipient, 
    :class_name => "User", 
    :foreign_key => "recipient_uid", 
    **:primary_key => "uid"**

ユーザーIDはユーザーテーブルの主キーではなかったためです。

于 2012-06-22T19:44:39.367 に答える