ActiveRecord STI:如何突破父类';默认范围

ActiveRecord STI:如何突破父类';默认范围,activerecord,ruby-on-rails-3.1,sti,default-scope,Activerecord,Ruby On Rails 3.1,Sti,Default Scope,在轨道3.1 RC6上,给定 class Animal < ActiveRecord::Base default_scope where(legs: 4) end 如何完全覆盖父类的默认范围 我也尝试过以下方法,但都不管用: default_scope{ unscoped.where legs: 2 } default_scope with_exclusive_scope{ legs: 2 } 我深入研究了Rails的源代码,提出了一个在Rails 3.1下工作的解决方案(使用ac

在轨道3.1 RC6上,给定

class Animal < ActiveRecord::Base
  default_scope where(legs: 4)
end
如何完全覆盖父类的默认范围

我也尝试过以下方法,但都不管用:

default_scope{ unscoped.where legs: 2 }
default_scope with_exclusive_scope{ legs: 2 }

我深入研究了Rails的源代码,提出了一个在Rails 3.1下工作的解决方案(使用activerecord 3.1.0.rc6进行了测试):

class Animal
我找到了这个,它帮助了我

似乎这在Rails 3.0中可以正常工作:self.default\u scoping=[]此链接已断开。你知道它可能搬到哪里去了吗?
SELECT * FROM animals WHERE legs = 4 AND legs = 2
default_scope{ unscoped.where legs: 2 }
default_scope with_exclusive_scope{ legs: 2 }
class Animal < ActiveRecord::Base
  default_scope where(legs: 4)
end

class Man < Animal
  self.default_scopes = []
  default_scope where(legs: 2)
end