假设我在表格上有几个默认范围
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)
答案 0 :(得分:2)
不,unscoped
不接受参数
在您的情况下,您最好定义正常的scopes
(是:named_scopes
)。
只有当您需要<{1>}中定义的始终(或几乎)数据时,才应使用default_scopes。