ruby-on-rails - Ruby on rails order_by 两个属性
问题描述
我有一个表,在这个表中我需要完成的属性,如果它的 null 是第一个,但同时我希望到期日期按 asc 排序
def all_cases
@cases=Case.order("finished ASC NULLS FIRST").order(due_date: :asc).paginate(page: params[:page], per_page: 20)
if params[:search]
@search_term = params[:search]
@cases = Case.order("finished ASC NULLS FIRST").order(due_date: :asc).casesearch_by(@search_term).paginate(page: params[:page], per_page: 20)
else
@cases = Case.order("finished ASC NULLS FIRST").order(due_date: :asc).order(sort_columnn + " " + sort_direction).paginate(page: params[:page], per_page: 20)
end
end
此代码将完成的空值添加为第一个但未对到期日期进行排序
提前致谢
解决方案
取决于你想要什么,
Case.order("finished IS NOT NULL").order(due_date: :asc)
这行代码将首先按due_date排序,而不是按finished属性排序,
所以在你得到的记录前面将是finished为null的记录。
Case.order(due_date: :asc).order("finished IS NOT NULL")
这行代码将首先按完成属性排序而不是按到期日期排序,
因此在您获得的记录前面将记录哪个到期日期更小。
推荐阅读
- react-native - React Native - 运行并行 Axios / 获取请求
- fenics - 如何在 GMSH GUI 中创建构面?
- jquery - 绑定选择和单选按钮的问题
- pyqt5 - 如何使用 Bluez DBus API 和 Qt DBus 构建 BLE 广告
- python - 如何从数据框的列创建多行
- javascript - 我什么时候应该使用 async/await,什么时候应该使用回调 [js]?
- c# - Worker 服务,如何让 MQTT 事件订阅不中断?
- .net - 在 WSDL 中重命名 PortType(Interface name) 会导致兼容性问题?
- python - 对 ModelForm 中的同一字段使用 django-autocomplete-light 和 django-addanother
- angular - 不允许客户端进行 Angular DOM 更改