wo die Bedingungen, die auf aktiven Datensatz rails 3
Ich versuche, fügen Sie eine bedingte, wo nur die Datensätze, die die Bedingung erfüllen, sind Griff aus dem Modell. Zum Beispiel, ich versuche, nur schnappen Sie Datensätze aus der Transaktion Modell, bei dem die :price
ist entweder größer oder nicht gleich 0 (ich habe versucht, > und != aber weder gearbeitet, im Beispiel unten).
price = Transaction.where(:company_id => company).where(:price != 0.00)
Hab ich auch so probiert:
price = Transaction.where(:company_id => company).where(:price != 0.00).collect{|item| if item.price.to_f > 0.00 {item.price.to_f} end}
...sowie andere Varianten der beiden oben genannten, die nicht funktioniert hat.
Ersten Beispiel oben produziert keine Fehler, sondern einfach nicht funktioniert. Die Bedingung wird ignoriert. Das zweite Beispiel erzeugt einen syntax-Fehler.
Ich bin mir auch ziemlich sicher, dass es einen Weg gibt, dies zu tun mit Vergleichsoperatoren in SQL, aber habe keine Ahnung, wie das geht.
Irgendwelche Vorschläge?
InformationsquelleAutor vich | 2012-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
:
ist die gleiche wie zu sagen:
als Symbol wird nie gleich sein ein Float;
where(true)
ist sinnlos, wie es fügt nur Ihre Datenbanken ist wahr, literal ('t'
für PostgreSQL1
in SQLite und MySQL), um die WHERE-Klausel und nicht alles tun, nützlich; zum Beispiel, wenn Sie sagen:dann ist dein SQL so enden wird in PostgreSQL:
und das ist das gleiche, als nur zu sagen,
Wenn eine Abfrage ist verwirrend Sie manchmal ist es hilfreich, eine
.to_sql
am Ende in der Rails-Konsole und sehen, was die SQL-enden tut (und wenn Sie nicht wissen, SQL, dann sollten Sie es lernen, wenn Sie beabsichtigen, eine relationale Datenbank zu benutzen, die in irgendeiner Eigenschaft).Den Sie senden möchten den Vergleich zu der Datenbank, nicht tun es in Ruby:
Gehe ich davon aus, dass Ihr
price
Spalte ist ein decimal-Typ eher als eine floating-point-Typ; wenn ich falsch Liege, dann ändere es-zu-dezimal-jetzt.Ja, man kann nicht wirklich Weg von SQL, wenn Sie eine relationale Datenbank, Sortieren Problemen ist viel einfacher, wenn Sie wissen, was Los ist hinter den kulissen.
InformationsquelleAutor mu is too short