我正在尝试在我的模型中使用has_many through
条件参数,但我遇到了一个小问题。让我们从代码示例开始:
class User < ActiveRecord::Base
has_may :user_items
has_many :look_ups, through: :user_items, conditions: { sType: 'SKINTONE' }
end
class UserItem < ActiveRecord::Base
belongs_to :user
belongs_to :look_up
end
现在,问题是:我需要使用look_up_ids
助手来保存相关的查找,但是使用
User.first.look_up_ids = [1,2,3]
未保存我在sType
关系中定义的has_many through
字段(where sType = 'SKINTONE'
)。它将它保存为零。有趣的是,使用User.first.look_ups.build
工作正常并将sType
设置为SKINCOND
。
是否有任何内置方法告诉rails activerecord根据关联条件自动发现该字段,或者我需要手动执行此操作?
答案 0 :(得分:0)
我在这里找到了答案:克雷格沃克的https://stackoverflow.com/a/13144013/552936
诀窍是创建一个新的一阶has_many关联 包含条件,然后运行has_many:through。
所以我应该使用这段代码:
class User < ActiveRecord::Base
has_may :user_items, conditions: { sType: 'SKINTONE' }
has_many :look_ups, through: :user_items
end