在我的用户模型中,我通常怀疑电子邮件、名字、姓氏、密码等。
我有几种情况需要跳过所有或部分验证。
目前,我有一个看起来像这样的除非条件:
validates :first_name, presence: :true, etc..., unless: :skip_first_name_validation?
validates :last_name, presence: :true, etc..., unless: :skip_last_name_validation?
validates :email, presence: :true, etc..., unless: :skip_email_validation?
当然我也有:
attr_accessor :skip_first_name_validation, :skip_last_name_validation, etc.
然后我使用私有方法来检查每个的状态:
def skip_first_name_validation?
skip_first_name_validation
end
def skip_last_name_validation?
skip_last_name_validation
end
def skip_email_validation?
skip_email_validation
end
etc..
true
从那里开始,每当我需要跳过验证时,我只需在我的控制器中为每个人分配一个值。
因此,尽管所有这些都可以正常工作,但我想知道是否有更优雅的方法?
理想情况下,如果我可以对模型中的每个属性使用这样的简单条件,那就太好了:
:skip_validation?
在我的控制器中,只需执行以下操作:
skip_validation(:first_name, :last_name, :password) = true
有人可以就我如何编程提出建议吗?我不想使用现有的 gem/库,但我想了解如何在 rails 中编程这种行为。谢谢。