Sql 在Rails中ActiveRecord模型中的何处强制

Sql 在Rails中ActiveRecord模型中的何处强制,sql,ruby-on-rails,activerecord,where,default-scope,Sql,Ruby On Rails,Activerecord,Where,Default Scope,有没有办法强制在我使用活动记录执行的每个SELECT语句中包含where语句?我使用的是Rails 4 例如: 如果我打电话: Product.where(name: 'Fishing rod') 然后,我希望Rails生成如下所示的SQL查询: SELECT * FROM products WHERE products.client_id = 1 AND (name = 'Fishing rod') 其中products.client_id=1是强制的where语句。我通过where或其他

有没有办法强制在我使用活动记录执行的每个SELECT语句中包含where语句?我使用的是Rails 4

例如: 如果我打电话:

Product.where(name: 'Fishing rod')
然后,我希望Rails生成如下所示的SQL查询:

SELECT * FROM products WHERE products.client_id = 1 AND (name = 'Fishing rod')
其中
products.client_id=1
是强制的where语句。我通过where或其他ORM方法定义的所有其他条件(如
find
或其他任何方法)也应包含在语句中

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

您可以使用

在您的模型中

default_scope { where(client_id: 1) }
根据文件

在创建/构建记录时,也会应用默认的_范围。信息技术 更新记录时不应用

因此,我建议您使用更显式的方法,并像这样定义一个命名范围

scope :client_one, -> { where(client_id: 1) }
你会用这个吗

Product.client_one.where(...)

非常感谢,
default\u scope
正是我想要的。在创建和初始化时设置
client\u id
并不是一个缺点,它为我节省了一些代码,就像我第一次想做的那样,在保存后添加
过滤器。