Ich habe eine Rails-Anwendung, die Informationen über Kinder speichert, bestimmte Felder würden eine child
anaphylaktische machen und ich möchte in der Lage sein, eine Methode in meinem Child
Modell zu definieren, so dass ich eine Überprüfung durchführen kann auf einem Rekord für Anaphylaxie. Zum Beispiel ist ein child
anaphylaktisch, wenn 10 bestimmte Felder nil
sind. Ich möchte nicht @anaphylactic_kids = Kid.where(. . . and . . . and . . .)
schreiben, da es wirklich lang wäre. Gibt es einen einfacheren Weg, dies zu tun? Danke für die Hilfe!Schienen definieren keine Überprüfung auf Datensatz in Modell
1
A
Antwort
4
Es gibt keine einfache Möglichkeit, die volle where
Klausel zu vermeiden, schreiben mindestens einmal, aber Sie können es vermeiden, in jeden Controller-Aktion Sie es verwenden wollen in schreiben, indem ein Rahmen für sie zu schaffen.
In Ihrem Modell, fügen Sie diese Methode:
def self.anaphylactic
Kid.where(:field1 => nil, :field2 => nil, :field3 => nil)
# complete the where clause for every field you need to check
end
Anstatt nun die volle Kid.where
Anweisung in Ihrem Controller zu verwenden, können Sie einfach Kid.anaphylactic
rufen die gleichen Ergebnisse zu erhalten.
Verwandte Themen
- 1. Multi Tabelle Vererbung auf Schienen (aktiver Datensatz)
- 2. Sortierschlüssel auf Django-Modell definieren
- 3. Schienen, die keine Ember-Parameter von Modell
- 4. Fetching zweite Ebene Modell mit Schienen aktiven Datensatz
- 5. Wie in Schienen Fehlermeldung auf Modell anzuzeigen
- 6. Wie Feldnamen in validates_presence_of auf Schienen Modell
- 7. before_create in Schienen Modell
- 8. Modell Probleme in Schienen
- 9. Schienen Modell Rückrufe
- 10. definieren globale Variable Schienen
- 11. Schienen: Erstellen oder Aktualisieren in Modell speichern
- 12. Schienen: undefinierte Methode in Modell
- 13. Ruby auf Schienen, Modell oder Konstante?
- 14. Schienen String Interpolation in Modell
- 15. Altdaten in neues Modell in Schienen migrieren
- 16. Schienen finden ID auf dem Modell
- 17. Threading in Schienen Konsole mit aktiver Datensatz nicht findet Modell in der Datenbank
- 18. Schienen validieren abhängiges Modell
- 19. Schienen generieren Modell
- 20. Schienen 3: Wie summiere ich Datensatz
- 21. Schienen zerstören Migration/Modell auf Heroku
- 22. Schienen benutzerdefinierte Modell Methode
- 23. Schienen: Modell-Ausführungsreihenfolge
- 24. "Schienen generieren Modell" hängt
- 25. Schienen: Modell und Array
- 26. Schienen Modell Konstanten
- 27. Optimieren einer Abfrage in Schienen Modelle aktiven Datensatz Schienen
- 28. Schienen Verein, einzelner Datensatz nur
- 29. Schienen: einfaches "Einstellungs" -Modell mit Schlüssel, Wertattribute
- 30. Laravel definieren Fähigkeiten auf einem Modell, anders als Benutzer
Sie können auch einen benannten Bereich definieren, aber die von ArtOfCode vorgeschlagene Lösung ist IMO besser. Auch im Hinterkopf behalten diese SQL erklären für eine solche Abfrage möglicherweise große und in Zukunft würde richtige Indizes ausreichen – Sebastian
@ Sebastian genannten Bereiche und Modell Klassenmethoden sind fast das Gleiche - es gibt ein paar Unterschiede, aber sie führen die gleiche Funktion am Ende – ArtOfCode
das scheint die genaue Idee zu sein, nach der ich gesucht habe, danke! –