Rails ActiveRecord STI:将范围限制为父模型

时间:2014-05-22 07:46:44

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

Class Physician < ActiveRecord::Base
  scope :exclusive, -> { where(type: [nil, '']) }
end

Class Ophthalmologist < Physician; end

如何让范围“独家”仅供医师使用?

1 个答案:

答案 0 :(得分:2)

我应该从:对于STI,类型永远不会是空白。如果是,则无法创建模型。

要回答您的问题,您可以使用以下方法将任何方法的范围限制为父类:

class Physician < ActiveRecord::Base
  scope :exclusive, -> { where(type: [nil, '']) }

  def self.inherited(mod)
    super               # allow rails to do its thing
    class << mod
      undef :exclusive
    end
  end
end