1

私はこのようなものを持っています私のユーザーモデル

class User < ActiveRecord::Base 

has_many :received_msgs, class_name:"Message", foreign_key: "recipient_id", :conditions =>['owner_id = ?', self.id]
has_many :sent_msgs, class_name: "Message", foreign_key: "sender_id", :conditions =>['owner_id = ?', self.id]

各メッセージは個別に削除するために複製されるため、owner_id をほぼ二次外部キーとして機能させたいと考えています。

ただし、オブジェクトの id が定義されていないというエラーが表示されます。この場合、self.id にアクセスするにはどうすればよいですか? または、これを行うより良い方法はありますか?

ありがとう

4

1 に答える 1

2

本当にしたくないだけですforeign_keyowner_id?そうすれば、そのconditions配列はまったく必要ありません。

とにかく、関連付け定義でアクセスできない理由はself.id、コードが評価されるスコープのためです。関連付けは#received_msgs、インスタンスで実際にメソッドを呼び出すときではなく、クラスをロードするときに評価されUserます。

self.id条件配列をラムダでラップすることで、インスタンスの にアクセスできると思います。そうすれば、呼び出すまで評価されません。

于 2012-07-17T12:23:52.847 に答える