0

Active Record で実行するすべての SELECT ステートメントに where ステートメントを強制的に含める方法はありますか? Rails4を使用しています。

例:私が電話した場合:

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 に答える