Si vous avez Rails 3+ envisager d'utiliser la nouvelle syntaxe de AREL pour certains de la construction de votre requête:
records = Car.where(:doors => 4, :type => "sedan")
records = records.where("color NOT LIKE ?", "%black%")
Mais si vous utilisez toujours Rails 2.3 puis la la syntaxe ressemble à:
clauses = ["doors = ?", "type = ?"]
conditions = [4, 'sedan']
if some_reason
clauses << "color NOT LIKE ?"
conditions << "%robert%"
end
Cars.find(:all, :conditions => [clauses.join(" AND"), *conditions])
Certainement plus ennuyeux que la syntaxe AREL.
Un avantage secondaire de cette syntaxe est que lorsque ActiveRecord remplace le ?
, il désinfecte les entrées pour l'injection SQL.