rails根据表单验证

时间:2014-01-15 17:55:27

标签: ruby-on-rails ruby validation model-view-controller ruby-on-rails-4

我有两个单独的表单,用于个人资料图片和其他个人资料信息。但是,两种形式都对应于配置文件模型。对于几个配置文件属性,我有以下验证:

validates :title, presence: true
validates :zip_code, presence: true

问题是当有人试图上传图片时会检查验证,这是我不想要的。话虽这么说,我也有一个图像验证器,所以我不想完全避免验证,只是某些。我正在考虑尝试访问模型中的params哈希,但我无法弄清楚如何并且我非常肯定它是一个坏主意无论如何。如何制定正确的验证条件?我已经尝试过了:

validates :title, presence: true, :unless => :picture_exists?

def picture_exists?
    if self.pic
        puts 'yo pic exist'
        return true
    else
        puts 'yo no pic'
        return false
    end
end

但它不起作用,因为它检查配置文件是否有图片,而不是参数是否有图片。因此,如果有人已经保存了图片,他们就可以绕过我不想要的验证。我希望在不使用图片提交表单时绕过验证。

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式解决问题:

1.-在控制器操作中略过所有验证(我猜是手动验证)

save(validate: false)source

2.-使用您在保存like this之前手动设置的条件。

3.-使用自定义验证,阻止所有其他验证在通过时触发。

也许你可以拿出更多。

PS:为什么您希望用户在设置个人资料图片之前绕过其他验证?

GL& HF