Form_for编辑没有所有属性的资源

时间:2014-10-25 04:01:18

标签: ruby-on-rails validation activerecord updates

我建立了一个form_for来编辑资源(这里是一个用户)。在模型中,指定某些属性不能为空(例如密码)。我有第二个表单来编辑此用户作为管理员。此表单不需要用户密码,但可以填写以更改此用户的密码。问题是验证失败导致没有指定密码(验证失败:密码不能为空)。

我想知道是否有办法以这种方式编辑资源,而不会在参数为空白时删除密码字段。

@user.update!(user_params)

1 个答案:

答案 0 :(得分:1)

您可以执行类似param删除的操作。在保存之前的更新方法中执行类似的操作。

if params["user"].has_key? "password"
  if params["user"]["password"].empty? and user_is_admin?
    params["user"].delete("password")
  end
end

使用您自己的管理检查方法替换user_is_admin?