根据条件

时间:2016-10-31 12:37:03

标签: ruby-on-rails ruby

我有一个枚举状态:

enum status: [ :x, :y , :z ]

每个状态都具有仅与所选状态相关的模型属性。

如果状态是' x'我将如何验证?与' y'相关的属性和' z'是空白的?状态' y'需要进行类比验证。和状态' z'。

我想验证只存在与所选状态相关的字段(属性)。

1 个答案:

答案 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'"