Sql 有没有办法对Ruby order列进行优先级排序?

Sql 有没有办法对Ruby order列进行优先级排序?,sql,ruby-on-rails,ruby,Sql,Ruby On Rails,Ruby,我在模型上有一个订单条款: sorted = Teacher.order('teachers.first_name asc, teachers.last_name asc') 还有几个范围其中方法在排序后调用 最后,如果存在排序参数,则在排序的上调用order Rails生成的SQL语句将有一个order by3列(first_name,last_name,最后一列来自过滤器发送的参数)。 数据集永远不会按所需列排序,除非有教师的名字和姓氏相同 如果存在排序参数,是否有方法对order列进行优

我在模型上有一个订单条款:

sorted = Teacher.order('teachers.first_name asc, teachers.last_name asc')
还有几个
范围
其中
方法在
排序后调用

最后,如果存在排序参数,则在排序的
上调用order

Rails生成的SQL语句将有一个
order by
3列(
first_name
last_name
,最后一列来自过滤器发送的参数
)。
数据集永远不会按所需列排序,除非有教师的名字和姓氏相同

如果存在排序参数,是否有方法对order列进行优先级排序?

如果存在参数,则可以调用关系,但随后必须重新指定所有字段,因此不太吸引人

用指定的顺序替换关系上定义的任何现有顺序

User.order('email DESC').reorder('id ASC') # generated SQL has 'ORDER BY id ASC'
据我所知,没有任何东西允许您说“我希望此
顺序
值出现在先前设置的
顺序
值之前”

如果参数存在,您可以调用关系,但随后您必须重新指定所有字段,因此不太吸引人

用指定的顺序替换关系上定义的任何现有顺序

User.order('email DESC').reorder('id ASC') # generated SQL has 'ORDER BY id ASC'
据我所知,没有任何内容允许您说“我希望此
顺序
值出现在先前设置的
顺序
值之前”

最后,如果存在排序参数,则在排序的
上调用order

我想它看起来是这样的:

sorted = Teacher.order('teachers.first_name asc, teachers.last_name asc')
# ...
sorted = sorted.order(sort_param) if sort_param
如果存在排序参数,是否有方法对订单列进行优先级排序

只需相应地重新排序方法调用:

sorted = Teacher.all
# ...
sorted = sorted.order(sort_param) if sort_param
sorted = sorted.order('teachers.first_name asc, teachers.last_name asc')
最后,如果存在排序参数,则在排序的
上调用order

我想它看起来是这样的:

sorted = Teacher.order('teachers.first_name asc, teachers.last_name asc')
# ...
sorted = sorted.order(sort_param) if sort_param
如果存在排序参数,是否有方法对订单列进行优先级排序

只需相应地重新排序方法调用:

sorted = Teacher.all
# ...
sorted = sorted.order(sort_param) if sort_param
sorted = sorted.order('teachers.first_name asc, teachers.last_name asc')
“然后有几种[…]方法[…]你能举个例子吗?”然后有几种[…]方法[…]你能举个例子吗?