0

has_many throughモデルで条件パラメーターを使用しようとしていますが、小さな問題があります。コードサンプルから始めましょう:

user.rb

class User < ActiveRecord::Base
  has_may  :user_items
  has_many :look_ups, through: :user_items, conditions: { sType: 'SKINTONE' }
end

user_item.rb

class UserItem < ActiveRecord::Base
  belongs_to :user
  belongs_to :look_up
end

そして今、問題:look_up_idsヘルパーを使用して関連するルックアップを保存する必要がありますが、

User.first.look_up_ids = [1,2,3]

リレーションsTypeで定義したフィールドを保存していません(これは です)。nilとして保存します。興味深いことに、 を使用すると正常に動作し、 に設定されます。has_many throughwhere sType = 'SKINTONE'User.first.look_ups.buildsTypeSKINCOND

関連条件に基づいてそのフィールドを自動検出するようにレールのアクティブレコードに指示する組み込みの方法はありますか、それとも手動で行う必要がありますか?

4

1 に答える 1

0

ここで答えを見つけました:https://stackoverflow.com/a/13144013/552936 by Craig Walker

トリックは、条件を含む新しい一次 has_many 関連付けを作成し、それに対して has_many :through を実行することです。

だから私はこのコードを使用する必要があります:

class User < ActiveRecord::Base
  has_may  :user_items, conditions: { sType: 'SKINTONE' }
  has_many :look_ups, through: :user_items
end
于 2013-10-16T19:34:24.480 に答える