Ich versuche, ein Projekt von Rails 3 bis Rails 4. In Rails 3 zu aktualisieren, ich tat:Falsche Reihenfolge auf has_many Assoziation, wenn sie von Schienen 3 auf Schienen 4 aktualisieren
class Sale < ActiveRecord::Base
has_many :windows, :dependent => :destroy
has_many :tint_codes, :through => :windows, :uniq => true, :order => 'code ASC'
has_many :tint_types, :through => :tint_codes, :uniq => true, :order => 'value ASC'
end
Als ich sale.tint_types nennen , tut es die folgende Abfrage in Rails 3:
SELECT DISTINCT "tint_types".* FROM "tint_types" INNER JOIN "tint_codes" ON "tint_types"."id" = "tint_codes"."tint_type_id" INNER JOIN "windows" ON "tint_codes"."id" = "windows"."tint_code_id" WHERE "windows"."sale_id" = 2 ORDER BY value ASC
ich es für Rails 4 wie folgt aktualisiert:
class Sale < ActiveRecord::Base
has_many :windows, :dependent => :destroy
has_many :tint_codes, -> { order('code').uniq }, :through => :windows
has_many :tint_types, -> { order('value').uniq }, :through => :tint_codes
end
Die Abfrage Änderungen an:
SELECT DISTINCT "tint_types".* FROM "tint_types" INNER JOIN "tint_codes" ON "tint_types"."id" = "tint_codes"."tint_type_id" INNER JOIN "windows" ON "tint_codes"."id" = "windows"."tint_code_id" WHERE "windows"."sale_id" = $1 ORDER BY value, code
Es fügt Code in der Reihenfolge Klausel und das macht PostgreSQL einen Fehler durch. Ich nehme an, dass es wegen des Bereichs ist, aber ich kann nicht herausfinden, wie man diesen ORDER BY-Code herausbekommt.
Jede Hilfe ist willkommen, Vielen Dank!
versuchen 'unscoped.order ('Wert'). Uniq' – tihom
Bereits versucht, dass. Funktioniert nicht. Es sieht so aus, als ob es zuerst die Reihenfolge von tint_types und danach die von tint_codes einrichtet. – st3fan