0

有什么方法可以强制在我使用 Active Record 执行的每个 SELECT 语句中包含 where 语句?我正在使用 Rails 4。

例如:如果我打电话:

Product.where(name: 'Fishing rod')

然后我希望 Rails 生成如下 SQL 查询:

SELECT * FROM products WHERE products.client_id = 1 AND (name = 'Fishing rod')

whereproducts.client_id = 1是强制的 where 语句。我通过 where 或其他 ORM 方法(如或其他)定义的所有其他条件find也应包含在语句中。

是否有可能定义这种强制条件

4

1 回答 1

2

你可以这样做default_scope

在你的模型中

default_scope { where(client_id: 1) }

根据文档

在创建/构建记录时也会应用 default_scope。更新记录时不应用它。

因此,我建议您使用更明确的方法并定义这样的命名范围

scope :client_one, -> { where(client_id: 1) }

你会像这样使用它

Product.client_one.where(...)
于 2014-09-06T18:43:27.970 回答