首页 > 解决方案 > SQL WHERE 列 = 一切(使用 Active Record)

问题描述

在 SQL 中,当条件列表 (WHERE) 事先不知道但在代码执行时构建时,您可以创建动态 SQL 语句。所以有时我想要一个记录子集(比如与数组匹配的 id),但在其他情况下,我不希望应用条件(因此返回整个列表)。

在纯 SQL 中有这个解决方案:Stackoverflow: SQL WHERE column = all

SELECT * FROM table WHERE id = id

更多信息:Stackoverflow:为什么有人会在 SQL 子句中使用 WHERE 1=1 AND?

我将如何使用 Active Record 中的 DSL 来做到这一点?

标签: sqlruby-on-railsactiverecord

解决方案


Rails 中的链接where子句非常简单

dataset = User.all
dataset = dataset.where(name: "John") if filter_name?
dataset = dataset.where("age > ?", 20) if filter_age?
dataset

推荐阅读