【问题标题】:Allow user profile update without password允许在没有密码的情况下更新用户配置文件
【发布时间】:2014-03-10 18:27:08
【问题描述】:

如果当前用户是管理员,我需要建议如何建模允许在未经验证的情况下更新模型。我制作了一个简单的用户模型:

create_table "user", force: true do |t|
    t.string   "username",
    t.string   "password",
    t.string   "description",
    t.string   "title",
    t.boolean  "disabled"
end

所有用户都可以通过再次提供密码来更新他们的个人资料。管理员可以选择禁用这样的用户:

<%= link_to 'Disable', user_path(user, :user => {:disabled => true}), :method => :put %>

问题是在我的模型内部我有以下验证:

validates :password, length: { minimum: 10 }

在管理员触发禁用用户的操作后,错误显示密码太短并且需要至少 10 个字符长。如何为管理员禁用该验证?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rails-activerecord


    【解决方案1】:
    validates :password, length: { minimum: 10 }, :unless => :admin?
    
    def admin?
      self.role == "Admin"
    end
    

    P.S:我不知道您必须如何检查才能知道用户是否是管理员。我假设你有一个角色列

    【讨论】:

    • 谢谢。我需要类似的东西。唯一的事情是管理员可以编辑所有用户,因此 self.role 不起作用,因为那是针对被编辑的用户的。我有一个助手,我可以在其中检查用户是否是管理员,但现在我看到我无法在我的模型中访问该助手的方法。
    猜你喜欢
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    相关资源
    最近更新 更多