ruby-on-rails - Rails 中的可选位置

标签 ruby-on-rails ruby activerecord rails-activerecord

如何在 Rails 中使 where 可选?

我试过:

@pages = Page
             .where(status: params[:status].present? ? params[:status] : 1)
             .where(parent_id: nil) if params[:status].blank?
             .order(sort_column + ' ' + sort_direction)

但它看起来是退出 block ,而是返回:undefined method 'where' for true:TrueClass

最佳答案

您可以将声明分成三行。 Rails 将延迟加载您的查询,因此不必担心这里的性能。它会正常工作:

@pages = Page.where(status: params[:status].present? ? params[:status] : 1)
@pages = @pages.where(parent_id: nil) if params[:status].blank?
@pages = @pages.order(sort_column + ' ' + sort_direction)

关于ruby-on-rails - Rails 中的可选位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41447198/

相关文章:

ruby-on-rails - CanCan - "user"参数为 nil - Rails 4

ruby-on-rails - ActiveAdmin:基于事件范围修改索引表

ruby-on-rails - 在 RSpec 中编写与 Resque 相关的规范的最佳方式是什么?

ruby-on-rails - 让 Rails #destroy_all 运行得更快

activerecord - Yii2:急切地选择计算列并将值加载到模型属性中

activerecord - 使用 Arel 进行嵌套集和连接查询并转换为 ActiveRecord::Relation

ruby-on-rails - 如何制作参数[:action] work if I pass parameters "action=test" in the end of url?

ruby - 不运行 mongodb 的 mongoid 单元测试

ruby-on-rails - .join/has_one 的 ActiveRecord .where :through

javascript - 在 ruby​​ on Rails 中提交表单,其中操作是您的完整网址