我正在编写一个控制器方法,可以选择修改查询(例如,通过对其进行排序)。
来自django背景,我通常会做类似的事情:
def method(**kwargs):
data = Model.all() # in django, this is a QuerySet
# chain the order if required
if 'order' in kwargs:
data = data.order_by(kwargs['order'])
我试图在ruby中做同样的事情:
def method
@data = Model.all # in rails, this is an *array*
if params.has_key? :sort then
@data = @data.order(params[:sort])
# also do other things, which is why this isn't a one-liner
end
但是,.all
会返回Array
,因此无法做到。
我已经浏览了Active Record Where Chain Reference,但我无法找到任何会返回代表整个查询的可链接对象的内容。这可能吗?
(我之后的要求是,如果:sort
不是参数,@data
仍可用于需要WhereChain
对象的任何地方。)