1

hasMany/belongsToアソシエーションを持つ2つのActiveRecordモデルがあります。

class User < ActiveRecord::Base
  has_many :letters
end

class Letter < ActiveRecord::Base
  belongs_to :user
end

Userモデルにはrevision_number属性があり、belongs_toアソシエーションのスコープを設定したいので、レターはuser.idとuser.revision_numberの両方によってUserに関連付けられます。

APIドキュメントに記載されているように:conditionsキーを使用してみました:

class Letter < ActiveRecord::Base
  belongs_to :user, :conditions => "revision_number = #{client_revision}"
end

ただし、これは、Letterのインスタンスではなく、Letterクラスでclient-revisionを呼び出そうとします。誰かがbelongs_toアソシエーションを正しくスコープするための正しい方向に私を向けることができますか?

私は、acts-as-revisableプラグインを使用してユーザーモデルをバージョン管理しています。

4

2 に答える 2

0

なぜこのようにスコープを設定したいのか理解に苦しむbelongs_to. 間違っていたら訂正しますが、こういうことをしたほうがいいかもしれません。ある種のバージョン管理システムが必要だと仮定しています。

class User < ActiveRecord::Base
  has_many :letters
end

class Letter < ActiveRecord::Base
  has_many :revisions, :class_name => "LetterVersion"
  belongs_to :current, :class_name => "LetterVersion"
end

class LetterVersion < ActiveRecord::Base
  belongs_to :letter
end
于 2009-07-29T15:21:08.013 に答える