我是rails新手。这里是富下面的代码模型对象:Rails:将两个查询合并为一个
a = Foo
a = Foo.where(age: 18)
if params[:sort] == "desc"
a = a.order("name desc")
end
这里进行两个查询,我想将它们合并到一个或者你可以说我想执行Foo.where(age=18).order("name asc")
记得有可能的情况下,当不需要订单时,即params [:sort]不等于desc。
,因为它使代码冗余,也为更多的参数,它可能无法正常工作,请不要给解决像
if params[:sort] == "desc"
a = a.where(age=18).order("name desc")
else
a = a.where(age=18)
end
。
附注:恕我直言,重新使用名称变量不是一个好的编程习惯。随着时间的推移,用有意义的名称创建新变量,跟踪该函数(并调试它)变得更容易。 – tokland 2012-08-03 07:40:26
@tokland将在未来尝试遵循这一点。 – 2012-08-03 07:42:05
另外,'where(age = 18)'是什么?它不应该是“哪里(年龄:18)”或“哪里(年龄= 18”)? – 2012-08-03 07:44:42