在having子句rails中访问id

时间:2017-10-06 16:22:06

标签: sql ruby-on-rails ruby activerecord

我在Rails 5中遇到HAVING子句的问题。 我拉出给定模型的所有价格,然后拉出所有提供Sku_ids的安排。 然后我将每个排列中找到的sku_ids与每个排列中的总skus进行比较。如果它们相等,那么我将它们添加到我的ModelConfig中 我试图找到包含所有SKU的安排。

问题在于having子句。我需要引用arrange.id来查找该排列中有多少Skus,但rails不断抛出一个方法未定义的错误。

非常感谢任何帮助。

错误中突出显示的行是Arrangement.find(arrangement_id).sku_configs.count 我无法理解的问题是为什么在.having中使用arrange_id时(count(arrangement_id)= ?,它无法在Arrangement.find(arrangement_id)中使用

ModelConfigsController#generator中的NameError>未定义的局部变量或方法`arrangement_id' for#struct> ModelConfigJob data =:data

谢谢,

   Model.all.each do |model|
      CoverGrade.all.each do |cover_grade|
        @prices = Price.where(model_id: model.id).where(cover_grade_id: cover_grade.id).select(:sku_id)
        @possible_arrangements = Arrangement.joins(:sku_configs).where('sku_configs.sku_id' => @prices).group('arrangements.id')
        @actual_arrangements = []
        @possible_arrangements.having("count(arrangement_id) = ?", Arrangement.find(arrangement_id).sku_configs.count do |pa|
           @actual_arrangements << pa
        end
        if @actual_arrangements.present?
          @actual_arrangements.each do |arrangement|
            ModelConfig.create(model_id: model.id, cover_grade_id: cover_grade.id, arrangement_id: arrangement.id)
          end
        end
      end
    end

1 个答案:

答案 0 :(得分:0)

这一行出现错误

@possible_arrangements.having("count(arrangement_id) = ?", Arrangement.find(arrangement_id))

arrangement_id似乎没有在这里定义。除此之外,我不认为这是你的意图,是吗? Arrangement.find(id)为您提供了一个Arrangement对象,该对象将在此处被解释为其id。想必在这里想要一些数字?