带有条件参数技巧的Rails查找方法

安德烈·哈塔耶夫(Andrey Khataev)

有没有一种方法可以使用一个命令来检索所有行并对其进行过滤?

所以,现在我有了条件逻辑

if rating_filter.nil?
  @movies = Movie.all
else
  @movies = Movie.find(:all, :conditions => {:rating => rating_filter})
end

也就是说,如果未设置用于字段的过滤器,则我不想按此字段进行过滤,但是如果将nil传递给第二个命令,则会得到:

 SELECT * FROM movies WHERE rating is NULL, though I need
 SELECT * FROM movies

如果我有多个参数,就会出现问题。如果两者都设置,那么没问题:

@movies = Movie.find(:all, :conditions => {:rating => rating_filter, :date => date_filter})

但是如果未设置一个过滤器,则需要分支我的逻辑以获取单独的命令:

if ..
  @movies = Movie.find(:all, :conditions => {:rating => rating_filter)
else
 @movies = Movie.find(:all, :conditions => {:date => date_filter})
else
 @movies = Movie.all
end

有一种技巧可以减少代码行,理想情况下可以减少一行吗?=)

尼克森

我认为您可以使用hash的拒绝功能尝试这种方式

    @movies = Movie.find(:all, :conditions => {:rating => rating_filter, :date => date_filter}.reject{|k, v| !v})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在带有条件参数的函数中使用“ sapply”

来自分类Dev

带有条件参数的猫鼬聚合

来自分类Dev

带有条件的Python断言

来自分类Dev

带有条件的SELECT子句

来自分类Dev

带有条件属性的接口

来自分类Dev

有条件的必需参数

来自分类Dev

Rails:有条件的远程表单

来自分类Dev

有条件的Rails Elasticsearch

来自分类Dev

有条件的Rails Style Div

来自分类Dev

MongoDB查找有条件项目的第二个参数

来自分类Dev

nginx proxy_pass带有条件的GET参数的url

来自分类Dev

从带有条件参数的列表列表中减去列表列表

来自分类Dev

mybatis注释选择带有条件中多次使用的参数的查询

来自分类Dev

带有条件参数的Node-postgres准备语句

来自分类Dev

带有条件的数据中特定变量的SAS统计参数

来自分类Dev

有条件的调用链接方法

来自分类Dev

有条件的列表链方法

来自分类Dev

在Rails的url路径中有条件地包含参数

来自分类Dev

带有条件子句的休眠条件

来自分类Dev

带有条件条件的Postgresql LEFT JOIN

来自分类Dev

DRY用于带有条件的Rust条件编译

来自分类Dev

有条件的三进制,带有对db的方法调用

来自分类Dev

有条件地使用带有 redux 状态的 setState 的正确方法

来自分类Dev

有条件的

来自分类Dev

有条件的

来自分类Dev

有条件地注入带有ManagedProperty的bean

来自分类Dev

SQL查找所有结果的最佳方式出现在两个带有条件的表中

来自分类Dev

有条件地查找并替换为 sed

来自分类Dev

选择带有条件的特定列值