当通过继承定义Trailblazer操作时,它会继承其超类的协定:
class Create < Trailblazer::Operation
contract do
...
end
...
end
class Update < Create
...
end
继承的 Trailblazer 操作的合约可以更改其超类定义的验证吗?
之所以出现这个问题,是因为创建操作的合同定义了一个强制属性,该属性需要在更新操作中是可选的:
validates :foo, presence: true
最初的想法是在继承的类中以某种方式颠倒这个定义,但似乎没有办法做到这一点(可以忽略子类中的属性(writeable:false
-书p61)但似乎没有办法更改其有效性标准)。