只有当某些属性不为空时,我才需要验证它们。
例如,用户可能有一个徽标。如果我们尝试加载它-验证应该会起作用。如果我们只是更新没有徽标的用户数据,则必须跳过验证。
现在我有了:
该表单有两个文件可供选择。一个标志,第二个头像。这两个属性都是用户模型的一部分。在用户模型a中进行验证:
validates_preference_of :logo_file_name, :message=>I18n.t("...")
validates_format_of :logo_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("...")
validates_preference_of :avatar_file_name, :message=>I18n.t("...")
validates_format_of :avatar_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("...")
在这种情况下,如果我们尝试创建一个没有选定徽标和头像的新用户,将会出现错误(我们的验证)。我尝试更改验证并添加":on => :update“,如下所示:
validates_preference_of :logo_file_name, :message=>I18n.t("..."), :on => :update
validates_format_of :logo_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("..."), :on => :update
validates_preference_of :avatar_file_name, :message=>I18n.t("..."), :on => :update
validates_format_of :avatar_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("..."), :on => :update
现在我可以创建没有选定的徽标和头像的用户,但如果我尝试编辑用户并尝试仅上传徽标-我有头像的验证错误。如果我为头像和徽标选择文件,请留空-我对徽标有验证错误。
如何对要更改的属性运行验证ony?
https://stackoverflow.com/questions/7868067
复制相似问题