Rails查找某些参数何时为空白
我有一个包含两个字段的搜索表单:x,y
执行搜索时,它将查找符合所有条件的记录。 但是,将两个条件中的任何一个都设置为“全部”,将其留空。
如果设置为all,我应该将params [:x]和params [:y]设置为什么。
params[:x] = ? unless params[:x] params[:y] = ? unless params[:y] users = User.where(["x = ? AND y = ?", params[:x], params[:y]])
我建议使用哈希建立你的条件:
conditions = {} conditions[:x] = params[:x] unless params[:x].blank? conditions[:y] = params[:y] unless params[:y].blank? users = User.find(:all, :conditions => conditions)
您需要链接您的条件,而不是尝试构建一个特定的范围。 您可以使用滑动范围技术:
scope = User if (params[:x].present?) scope = scope.where(:x => params[:x]) end if (params[:y].present?) scope = scope.where(:y => params[:y]) end users = scope.all
这样,您可以根据可能存在的参数有条件地使用限制。
- Rails after_save回调被多次调用
- Rails应用程序错误 – ActiveRecord :: PendingMigrationError正在等待迁移; 运行’rake db:migrate RAILS_ENV = development’来解决此问题
- Rails:after_create停止保存时出现exception
- Ruby on Rails加入表关联
- 食谱模型中的成分总和创建购物清单
- 在分析由Mongoid事件生成的ActiveRecord对象时,Rspec测试随机失败
- 如何覆盖自定义数据库适配器的rake任务?
- ActiveRecord对子集或记录的计算
- 为什么ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:near“)”:语法错误:INSERT INTO“user_friendships”()VALUES()