其中更多列等于一个值

时间:2014-06-23 11:24:02

标签: sql ruby-on-rails activerecord

我有这个重复的问题:

Model.where(:foo1 => "bar", :foo2 => "bar", :foo3 => "bar", ..., :foo9 => "bar")

我想知道是否有一种缩短代码的好方法,类似于相反的情况:

Model.where(:foo => ["bar1, bar2, bar3, ..., bar9"])

这可能吗?

2 个答案:

答案 0 :(得分:1)

在SQL中。你可以:

WHERE foo1 = foo2 = foo3 = ..... = foo9 = 'bar'

所以你可以尝试:

Model.where("foo1 = foo2 = foo3 = foo4 = foo5 = foo6 = foo7 = foo8 = foo9 = ?", "bar")

或多或少:demo

答案 1 :(得分:0)

除了sql建议之外的另一个选择是使用inject方法:

query = [:foo1, :foo2, :foo3].inject({}){|hash, key| hash[key] = "bar"; hash}
# => {:foo1=>"bar", :foo2=>"bar", :foo3=>"bar"}
Model.where(query)