我有一个枚举状态:
enum status: [ :x, :y , :z ]
每个状态都具有仅与所选状态相关的模型属性。
如果状态是' x'我将如何验证?与' y'相关的属性和' z'是空白的?状态' y'需要进行类比验证。和状态' z'。
我想验证只存在与所选状态相关的字段(属性)。
答案 0 :(得分:1)
您可以使用absence
validates
validates :x_attribute, absence: true, if: "status != 'x'"
validates :y_attribute, absence: true, if: "status != 'y'"
validates :z_attribute, absence: true, if: "status != 'z'"
如果需要,它适用于多个属性。
validates :x_attribute_1, :x_attribute_2, :x_attribute_3, absence: true, if: "status != 'x'"