Rails - 如何将此字符串条件写为数组条件

时间:2010-04-27 07:43:24

标签: ruby-on-rails conditional-statements

named_scope :correct, :include => :correction, :conditions => "checked_at IS NOT NULL AND corrections.id IS NULL"

在旁注上我已经用Google搜索了书并查看了书籍,但我似乎无法找到您可以使用的所有各种类型条件的列表,以及它们在将它们实现为字符串,数组或哈希时的不同之处。

是否有任何语法列表?

1 个答案:

答案 0 :(得分:4)

您发布的字符串是正确的。此外,没有办法使用数组或散列表达相同的条件。

当您需要插值时,Array-syntax和Hash语法非常有用。例如,以下条件

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

可以写成

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

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

Hash语法是Array语法的子集,仅支持一组有限的运算符。 例如,您可以转换

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

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

没有Hash等价物
# OR
named_scope :is_one, :conditions => ["field1 = ? OR field2 IN (?)", "1", ["foo", "bar"]]
# <>
named_scope :is_one, :conditions => ["field1 <> ?", "1"]