2010-04-27 7 views
1
named_scope :correct, :include => :correction, :conditions => "checked_at IS NOT NULL AND corrections.id IS NULL" 

Sur une note côté, je l'ai googlé charges et regardé à travers les livres, mais je ne peux pas sembler trouver une liste de tous les différents types de conditions que vous pouvez utiliser et comment ils diffèrent en les implanter en tant que chaînes, tableaux ou hachages.Rails - Comment puis-je écrire cette condition de chaîne comme une condition de tableau

Existe-t-il une liste de la syntaxe n'importe où?

+1

Pourquoi voulez-vous utiliser le format de tableau s'il n'y a aucun aspect variable la condition? –

+0

c'était juste pour l'amour des exemples vraiment. – robodisco

Répondre

4

La chaîne que vous avez indiquée est correcte. En outre, il n'y a aucun moyen d'exprimer la même condition en utilisant des tableaux ou des hachages.

La syntaxe tableau et la syntaxe Hash sont utiles lorsque vous devez interpoler des valeurs. Par exemple, la condition suivante

named_scope :is_one, :conditions => "field = '1'" 

peut être écrit comme

named_scope :is_one, :conditions => ["field = ?", "1"] 

ou

named_scope :is_one, :conditions => { :field => "1" } 

La syntaxe de Hash est un sous-ensemble de la matrice de syntaxe et ne supporte qu'un nombre limité des opérateurs. Par exemple, vous pouvez transformer

named_scope :is_one, :conditions => ["field1 = ? AND field2 IN (?)", "1", ["foo", "bar"]] 

dans

named_scope :is_one, :conditions => { :field1 => "1", :field2 => ["foo", "bar"] } 

mais il n'y a pas Hash équivalent pour

# OR 
named_scope :is_one, :conditions => ["field1 = ? OR field2 IN (?)", "1", ["foo", "bar"]] 
# <> 
named_scope :is_one, :conditions => ["field1 <> ?", "1"] 
+0

merci beaucoup simone pour l'avoir expliqué. Thats m'a vraiment beaucoup aidé! – robodisco

Questions connexes