При использовании 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
Кажется, что просто игнорируются условия if и проверяется все внутри состояния 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?