2017-10-06 58 views
-1

我遇到了Rails 5中HAVING子句的問題。 我爲給定模型提取所有價格,然後抽取具有提供的Sku_ids的所有佈置。 然後,我將每個排列中找到的sku_ids與每個排列中的總skus進行比較。如果他們相等,然後我將它們添加到我的ModelConfig 我試圖找到只包含所有SKU的安排。有子句軌道內的訪問ID

問題在於having子句。我需要引用arrangement.id來查找有多少Skus在這種安排中,但是rails一直在拋出一個未定義錯誤的方法。

任何幫助將不勝感激。

錯誤中突出顯示的行是Arrangement.find(arrangement_id).sku_configs.count 我無法理解的問題是爲什麼當在.having(count(arrangement_id)=?中使用arrange_id時,它不是'數據

謝謝

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 
:噸能夠在Arrangement.find(arrangement_id)

NameError在ModelConfigsController#發生器>未定義局部變量或方法`arrangement_id」爲#結構> ModelConfigJob數據=使用

+0

您能粘貼錯誤信息嗎? – ulferts

+0

這就是代碼的樣子。 @ possible_arrangements.having(「count(arrangement_id)=?」,Arrangement.find(arrangement_id).sku_configs.count).each 突出顯示的行是Arrangement.find(arrangement_id).sku_configs.count 問題我是唔明就是爲什麼當arrangement_id在.having(計數(arrangement_id)是用來=?,它不能在Arrangement.find(arrangement_id) ** NameError在ModelConfigsController#發電機** >未定義使用局部變量或方法'arrangement_id'爲#結構 > ModelConfigJob data =:data –

回答

0

有在這一行

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

arrangement_id似乎並不在這裏定義的錯誤。除此之外,我不認爲這是你的意圖,是嗎? Arrangement.find(id)爲您提供了一個Arrangement對象,該對象在這裏將被解釋爲它的id。大概你想在這裏有一些號碼?