[英]state_machine validations on transitions
使用state_machine gem,我希望获得仅在转换时运行的验证。 例如:
# Configured elsewhere:
# StateMachine::Callback.bind_to_object = true
class Walrus > ActiveRecord::Base
state_machine :life_cycle, :initial => :fetus do
state :fetus
state :child
state :adult
state :dead
event :coming_of_age do
transition :child => :adult
end
before_transition :child => :adult do
validate :coming_of_age_party_in_the_future
end
end
end
如果我将该验证附加到成人状态,则该日期过后将失败。 但我只需要它在过渡期间有效。 我可以添加如下内容:
validate :coming_of_age_party_in_the_future, if: 'adult? && life_cycle_was == "child"'
但这似乎错过了过渡点。
另外,由于我在回调中绑定了对象,它如何有条件地调用'validate',一个类方法? (绑定是必要的,因为回调中的许多方法都是私有的。)
您是否考虑过使用transition if: :x
? transition if: :x
功能?
它应该是这样的:
event :coming_of_age do
transition :child => :adult, if: :coming_of_age_party_in_the_future
end
您可以在自述文件中的“语法灵活性”(相当远的地方)中的“示例”(靠近顶部)或“转换上下文”中看到“类定义”部分
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.