state_machineを使用している場合、以下の方法でフィールドを条件付きで検証できますか?Rails state_machine - 条件付き検証?
state :unlit do
end
state :fire do
if is_big_fire?
validates_presence_of :big_log
end
if is_small_fire?
validates_presence_of :small_log
end
end
それだけの条件ならば、状態D内のすべてを検証無視するようだ:
私が思いついたソリューションの唯一ソートが
validates_presence_of :big_log, :if => Proc.new { |fire| fire.is_big_fire? }
だった。しかし、これはナットを取得より多くのバリデーションがある場合。
validates_presence_of :big_log, :if => Proc.new { |fire| fire.is_big_fire? }
validates :fire_epicness_rating, :inclusion => { :in => %w(epic whowa RUNFORTHEHILLS) }, :if => Proc.new { |fire| fire.is_big_fire? }
etc
ifブロックでこれらをきちんとラップする良い方法がありますか?