我在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
答案 0 :(得分:0)
这一行出现错误
@possible_arrangements.having("count(arrangement_id) = ?", Arrangement.find(arrangement_id))
arrangement_id
似乎没有在这里定义。除此之外,我不认为这是你的意图,是吗? Arrangement.find(id)
为您提供了一个Arrangement对象,该对象将在此处被解释为其id。想必在这里想要一些数字?