1

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

私の問題は、ActiveRecord (field_name) 検証の直接の祖先のみがチェックされることです...そして ConcreteClass のインスタンスには検証さえありませんか? メソッドを手動で呼び出そうとすると、オブジェクトは部分的な検証のみで保存されます。

ActiveRecord のすべてのサブクラスの検証メソッドを呼び出す方法はありますか?

4

1 に答える 1

0

の構文validateが間違っています。その後にセミコロンがあってはなりません。

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
于 2013-04-22T15:58:57.673 に答える