ruby-on-rails - 基于参数的动态 ActiveRecord 查找器方法链接

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

我是 Rails 的新手,我想根据不同的 GET 参数(过滤和排序)进行选择查询。我可以添加一些条件来在代码中查找吗?

例如:

if params[:ratings] 
  Movie.where(:rating => params[:ratings].keys)
end

然后添加排序和其他 where 条件。我怎样才能做到这一点?也许有更好的方法动态修改选择查询(无需制作 SQL 字符串)。 谢谢。

最佳答案

whereorder ... 方法返回 ActiveRecord::Relation 对象,因此您可以继续调用更多查询方法:

query = Movie
if(params[:ratings])
  query = query.where(:rating => params[:ratings].keys)
end
if(params[:some_order_param])
  query = query.order(params[:some_order_param])
end
# Keep adding more 'where', 'order', 'group', ... methods as needed ...
results = query.all

关于ruby-on-rails - 基于参数的动态 ActiveRecord 查找器方法链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11820182/

相关文章:

ruby-on-rails - 未捕获的 throw :warden 即使包含 Devise::TestHelpers

ruby - Merb 的文档真的像看起来那么糟糕吗?

ruby - 如何使用 rspec stub /模拟对命令行的调用?

sql - 基于 bool 列的条件求和

ruby-on-rails - 如何为 rails-settings 插件创建表单

jquery - 如何在滚动时保持标题栏不被切断

ruby-on-rails - 如果照片为 :title is included in form,CarrierWave 和嵌套表格保存空图像对象

ruby-on-rails - 使用 Rails 与 Outlook 约会进行交互

ruby - 为什么 Net:HTTP/HTTPParty 调用中断 Watir-Webdriver 脚本/Net::ReadTimeout 错误

sql - 在 ActiveRecord 中存储序列化哈希与键/值数据库对象的优缺点?