Ruby on rails Rails STI:从子类调用的超类模型方法

Ruby on rails Rails STI:从子类调用的超类模型方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想确认一下我做的是否正确。使用rails单表继承,我有以下模型和类方法: class PhoneNumber < ActiveRecord::Base def self.qual?(number) klass = self klass.exists?(:phone_number => phone_number) end end class Bubba < PhoneNumber end class Rufus < PhoneNumber en

我想确认一下我做的是否正确。使用rails单表继承,我有以下模型和类方法:

class PhoneNumber < ActiveRecord::Base
  def self.qual?(number)
    klass = self
    klass.exists?(:phone_number => phone_number)
  end
end

class Bubba < PhoneNumber
end

class Rufus < PhoneNumber
end

Bubba.qual?("8005551212")
classphonenumber电话号码)
结束
结束
类Bubba
测试通过,rails控制台中的一切似乎都正常工作。只是想通过在超类PhoneNumber中使用self并使用它在父类的子类上执行类方法来确认我不会在将来遇到麻烦


有更好的办法吗?

我看没问题。您可以进一步缩短该方法:

class PhoneNumber < ActiveRecord::Base
  def self.qual?(phone_number)
    exists?(:phone_number => phone_number)
  end
end

杰出的因此,继承的类方法完全在子类的范围内执行。因此,类方法不需要指定类alamyclass.class_method。我在回答中添加了一些附加信息。看一看。
# out side your STI models
Bubba.qual?("8003455678")
Rufus.qual?("8003455678")
PhoneNumber.qual?("8003455678")

# in the class method of your STI model
qual?("8003455678")

# in the instance method of your STI model
self.class.qual?("8003455678")