如何在rails的where子句中包含if条件

Posted

技术标签:

【中文标题】如何在rails的where子句中包含if条件【英文标题】:How to include a if condition inside where clause in rails 【发布时间】:2022-01-04 12:58:07 【问题描述】:

我有以下方法:

def add_books(year, industry, author_id=nil)
  Books.where(publication_year:year, author: author_id)
end

如果未通过,我如何更新查询以不按author_id 过滤?

【问题讨论】:

有空请到***.com/help/someone-answers。注意到您有一些问题的答案您不接受。谢谢。 【参考方案1】:

我会这样做:

def add_books(year, industry, author_id = nil)
  conditions =  publication_year: year 
  conditions[:author_id] = author_id if author_id.present?

  Books.where(conditions)
end

但是,add_books 方法的名称暗示了一个 create 你没有。也没有使用industry。有点可疑:)

【讨论】:

以上是关于如何在rails的where子句中包含if条件的主要内容,如果未能解决你的问题,请参考以下文章

如何在rails中添加条件where子句

如何将 if 条件放在 where 子句中

要提高SQL查询效率where语句条件的先后次序应如何写

要提高SQL查询效率where语句条件的先后次序应如何写

如果不为空,SQL 将在 Where 中包含条件

pentaho cde在sql查询中包含/排除where子句