首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >覆盖Rails default_scope

覆盖Rails default_scope
EN

Stack Overflow用户
提问于 2009-12-03 00:36:53
回答 9查看 94.1K关注 0票数 163

如果我有一个具有default-scope的ActiveRecord::基础模型:

代码语言:javascript
复制
class Foo < ActiveRecord::Base

  default_scope :conditions => ["bar = ?",bar]

end

有没有办法在不使用default_scope条件的情况下执行Foo.find?换句话说,你能覆盖一个默认的作用域吗?

我本以为在名称中使用‘’会暗示它是可覆盖的,否则它就会被称为类似global_scope的东西,对吧?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-12-03 00:50:20

简而言之:除非迫不得已,否则不要使用default_scope。使用命名作用域可能会更好。也就是说,如果需要,您可以使用with_exclusive_scope覆盖默认作用域。

有关更多详细信息,请查看this question

票数 158
EN

Stack Overflow用户

发布于 2010-11-13 00:42:02

在Rails 3中:

代码语言:javascript
复制
foos = Foo.unscoped.where(:baz => baz)
票数 217
EN

Stack Overflow用户

发布于 2012-08-02 22:27:18

如果您只需要更改default_scope中定义的顺序,则可以使用reorder method

代码语言:javascript
复制
class Foo < ActiveRecord::Base
  default_scope order('created_at desc')
end

Foo.reorder('created_at asc')

运行以下SQL:

代码语言:javascript
复制
SELECT * FROM "foos" ORDER BY created_at asc
票数 112
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1834159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档