如果我有一个具有default-scope的ActiveRecord::基础模型:
class Foo < ActiveRecord::Base
default_scope :conditions => ["bar = ?",bar]
end
有没有办法在不使用default_scope
条件的情况下执行Foo.find
?换句话说,你能覆盖一个默认的作用域吗?
我本以为在名称中使用‘’会暗示它是可覆盖的,否则它就会被称为类似global_scope
的东西,对吧?
发布于 2009-12-03 00:50:20
简而言之:除非迫不得已,否则不要使用default_scope
。使用命名作用域可能会更好。也就是说,如果需要,您可以使用with_exclusive_scope
覆盖默认作用域。
有关更多详细信息,请查看this question。
发布于 2010-11-13 00:42:02
在Rails 3中:
foos = Foo.unscoped.where(:baz => baz)
发布于 2012-08-02 22:27:18
如果您只需要更改default_scope
中定义的顺序,则可以使用reorder
method。
class Foo < ActiveRecord::Base
default_scope order('created_at desc')
end
Foo.reorder('created_at asc')
运行以下SQL:
SELECT * FROM "foos" ORDER BY created_at asc
https://stackoverflow.com/questions/1834159
复制相似问题