has_many通过并包含使用_ids helper的条件

时间:2013-10-16 17:27:04

标签: ruby-on-rails ruby activerecord

我正在尝试在我的模型中使用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关系中定义的has_many through字段(where sType = 'SKINTONE')。它将它保存为零。有趣的是,使用User.first.look_ups.build工作正常并将sType设置为SKINCOND

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

1 个答案:

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