Ruby on rails 如何验证ActiveRecord的子类

Ruby on rails 如何验证ActiveRecord的子类,ruby-on-rails,inheritance,activerecord,Ruby On Rails,Inheritance,Activerecord,我想在将某些属性保存到ROR中的数据库之前验证它们 我的代码如下所示: class AbstractClass < ActiveRecord::Base validate :field_name, :numericality => { :only_integer => true } self.abstract_class = true end class OtherAbstractClass < AbstractClass validate :other_fie

我想在将某些属性保存到ROR中的数据库之前验证它们

我的代码如下所示:

class AbstractClass < ActiveRecord::Base
 validate :field_name, :numericality => { :only_integer => true }
 self.abstract_class = true
end

class OtherAbstractClass < AbstractClass
  validate :other_field, :numericality => { :only_integer => true }
  self.abstract_class = true
end

class ConcreteClass < OtherAbstractClass
  validate :third_field, :numericality => { :only_integer => true }
end
class AbstractClass{:仅\u integer=>true}
self.abstract_class=true
终止
类OtherAbstractClass{:only_integer=>true}
self.abstract_class=true
终止
类ConcreteClass<其他抽象类
验证:第三个_字段,:numericality=>{:only_integer=>true}
终止
我的问题是,只检查ActiveRecord(字段名称)验证的直接祖先。。。而ConcreteClass的实例甚至没有一个validate?方法,并且仅通过部分验证保存对象


有没有办法调用ActiveRecord所有子类的验证方法?

验证的语法错误,后面不应该有分号

class ConcreteClass < OtherAbstractClass
   validate :field_name, :numericality => { :only_integer => true }
   validate :other_field, :numericality => { :only_integer => true }
   validate :third_field, :numericality => { :only_integer => true }

   # other code
end
class-ConcreteClass{:仅\u integer=>true}
验证:其他_字段,:numericality=>{:only_integer=>true}
验证:第三个_字段,:numericality=>{:only_integer=>true}
#其他代码
终止

问题是只调用validate:field\u name,:numericality=>{:only\u integer=>true}。我试图移动子类(ConcreteClass)中的所有验证器,但没有一个被调用..@Antzi,我明白了。你所说的语法是错误的,我只是盲目地复制了它们。分号不应在
validate
之后,而应在符号之前。我在回答中修改了它。为什么不调用超类代码?我不是说,
验证
特别有效,目前无法检查——但这是类声明中的正常代码,没有理由不调用它。@BillyChan,我编辑了代码,我犯了一个错误,写了
验证:字段名称
而不是
验证:字段名称
,谢谢。@DaveNewton,我的错误在于,在没有太多思考和验证的情况下得出结论。我先前的主张是错误的。抱歉搞混了。