0

我正在尝试has_many through在我的模型中使用条件参数,但我有一个小问题。让我们从代码示例开始:

用户.rb

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

用户项目.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我在has_many through关系中定义的字段(即where sType = 'SKINTONE')。它将它保存为 nil。有趣的是 usingUser.first.look_ups.build工作正常并设置sTypeSKINCOND.

是否有任何内置方法可以告诉 rails activerecord 根据关联条件自动发现该字段,或者我需要手动执行此操作?

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 回答