Ruby on rails Rails STI:从子类调用的超类模型方法
我想确认一下我做的是否正确。使用rails单表继承,我有以下模型和类方法: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
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")