假设我有一个STI设置如下:
class User < ActiveRecord::Base
scope :busy, -> { where('busy_factor > 1') }
end
class HeroUser < User
scope :busy, -> { where('busy_factor > 5') }
end
因此,英雄用户对繁忙范围有不同的阈值。
现在,如果我这样做,我会收到警告:
Creating scope :busy. Overwriting existing method HeroUser.busy.
一切似乎都能正常运作,但我想知道是否有更好的方法可以做到这一点。
答案 0 :(得分:8)
更简洁的方法如下:
将基类中的范围重新表示为:
范围:忙, - &gt; {where('busy_factor&gt;?',self.busy_factor)}
希望这有帮助。