【发布时间】:2012-08-03 07:35:02
【问题描述】:
我是 Rails 新手。以下是以 Foo 作为模型对象的代码:
a = Foo
a = Foo.where(age: 18)
if params[:sort] == "desc"
a = a.order("name desc")
end
这里执行了两个查询,我想将它们合并为一个,或者你可以说我想执行Foo.where(age=18).order("name asc")
请记住,可能存在不需要 order 的情况,即 params[:sort] 不等于 desc。
请不要给出类似的解决方案
if params[:sort] == "desc"
a = a.where(age=18).order("name desc")
else
a = a.where(age=18)
end
因为它使代码变得多余,而且对于更多参数它可能不起作用。
【问题讨论】:
-
旁注:恕我直言重用名称变量不是一个好的编程习惯。使用有意义的名称创建新变量,这样可以更轻松地跟踪函数(并对其进行调试)。
-
@tokland 将来会尝试跟进。
-
另外,
where(age=18)是怎么回事?不应该是where(age: 18)还是where("age=18")? -
对不起,rails 新手 :),我在这里打错了
标签: ruby-on-rails ruby rails-models