Diese Abfrage funktioniert, ist aber völlig offen für SQL-Injection:
%Vor% Wie kann ich die CID-Variable korrekt umgehen? Der conditions
-Parameter erlaubt das Format ['foo = ?', bar]
für diesen Zweck, aber joins
nicht.
Ich möchte nicht find_by_sql
verwenden, weil ich dann die Joins und Bedingungen hinzufügen müsste, die Teil des Standardbereichs des Modells sind (das wäre nicht DRY).
Bearbeiten: Meine Tabellenstruktur ist im Wesentlichen das:
%Vor%Beachten Sie, dass es sich um eine schreibgeschützte Datenbank handelt, mit der Rails nur eingeschränkt befasst ist. Ich plane nicht, Modelle für alle Tische aufzustellen; Ich möchte nur eine einfache Abfrage wie oben beschrieben durchführen, ohne mich SQL Injection Attacken auszusetzen.
Die Antwort, die ich gefunden habe, ist die Verwendung der Methode .sanitize
für das Modell:
Wenn Sie eine bessere Lösung finden, posten Sie sie bitte!
Tags und Links sql ruby-on-rails-3 mysql ruby-on-rails activerecord