范围基于许多可能的排除?

时间:2011-08-19 16:06:18

标签: ruby-on-rails ruby-on-rails-3 scope

如何创建基本上这样说的范围:

scope :filtered, where('status != one string, another string, yet another, yep, even more')

所以基本上说“状态不等于以下任何字符串。”

字符串列表会随着时间的推移而扩展。

注意,我正在使用PostgreSQL。

2 个答案:

答案 0 :(得分:0)

试试这个:(未经测试)

scope :filtered, where(["status <> ALL ( ARRAY[?, ?] )", 'string_1', 'string_2'])

答案 1 :(得分:0)

您可以使用:

scope :filtered, where(["status NOT IN (?)", ["string1", "string2", "string3"]])