我有这个重复的问题:
Model.where(:foo1 => "bar", :foo2 => "bar", :foo3 => "bar", ..., :foo9 => "bar")
我想知道是否有一种缩短代码的好方法,类似于相反的情况:
Model.where(:foo => ["bar1, bar2, bar3, ..., bar9"])
这可能吗?
答案 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)