假设我有一个 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.
一切似乎都正常运行,但我想知道是否有更好的方法来做到这一点。
最佳答案
更清洁的方法如下:
范围 :busy, -> { where('busy_factor > ?', self.busy_factor) }
希望这可以帮助。
关于ruby-on-rails - Rails STI 覆盖范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13315793/