2017-10-06 2 views
-1

J'ai un problème avec la clause HAVING dans Rails 5. je tire tous les prix pour un modèle donné, puis tirer toutes les dispositions qui ont fourni Sku_ids. Ensuite, je compare les sku_ids trouvés par arrangement au skus total dans chaque arrangement. Si elles sont égales, alors je les ajoute à mon ModelConfig J'essaye de trouver seulement les arrangements qui contiennent TOUS les SKUs.id accès à l'intérieur HAVING rails

Le problème est lié à la clause having. J'ai besoin de référencer le arrangement.id pour trouver combien de Skus sont dans cet arrangement, mais les rails continuent à jeter une erreur non définie de méthode.

Toute aide serait grandement appréciée.

La ligne a mis en évidence l'erreur est Arrangement.find (arrangement_id) .sku_configs.count La question que je vais avoir du mal à comprendre pourquoi quand arrangement_id est utilisé dans .having (count (arrangement_id) =?, Il n » t pouvant être utilisé dans Arrangement.find (arrangement_id)

NameError dans ModelConfigsController # generator> variable locale non définie ou méthode `arrangement_id » pour # struct> ModelConfigJob données =: données

Merci,

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

Pouvez-vous coller le message d'erreur, s'il vous plaît? – ulferts

+0

Voici à quoi devrait ressembler le code. @ possible_arrangements.having ("count (arrangement_id) =?", Arrangement.find (arrangement_id) .sku_configs.count) .each La ligne en surbrillance est Arrangement.find (arrangement_id) .sku_configs.count Le problème avoir de la difficulté à comprendre, c'est pourquoi quand arrangement_id est utilisé dans .having (count (arrangement_id) =?, il ne peut pas être utilisé dans Arrangement.find (arrangement_id) ** NameError dans ModelConfigsController # generator ** > undefined variable locale ou méthode 'arrangement_id 'pour # struct > ModelConfigJob data =: data –

Répondre

0

Il y a une erreur dans cette ligne

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

arrangement_id ne semble pas défini ici. En outre, je ne suppose pas que ce soit votre intention, n'est-ce pas? Arrangement.find(id) vous donne un objet Arrangement, qui serait interprété à son id ici. Vraisemblablement, vous voulez un certain nombre ici?