4

テーブルにいくつかのデフォルトのスコープがあるとしましょう

class User < ActiveRecord::Base
  default_scope where(:first_name => 'Allen')  # I know it's not realistic
  default_scope where(:last_name => 'Kim')     # I know it's not realistic
  default_scope where(:deleted_at => nil)
end

>> User.all
   User Load (0.8ms)  SELECT `users`.* FROM `users` 
   WHERE `users`.`first_name` = 'Allen' 
   AND  `users`.`last_name` = 'Kim' AND (`users`.`deleted_at` IS NUL

L)

first_name に関係なくユーザーを見つけたい場合は、スコープを解除してデフォルトのスコープを再定義するしかありません

User.unscoped.where(:deleted_at=>nil).where(:last_name=>"Kim")

次のような特定のキーのスコープを解除する方法はありますか?

User.unscoped(:first_name)
4

1 に答える 1

2

いいえ、unscopedパラメータを受け入れません。
あなたの場合、通常の定義をしたほうがよいようです(以前はscopes:) named_scopes

default_scopesは、で定義されているように常に(またはほぼ)データが必要な場合にのみ使用してdefault_scopeください。

于 2013-01-28T19:40:20.653 に答える