不允许用户使用Rails设计更改电子邮件地址

时间:2012-08-29 18:07:54

标签: ruby-on-rails ruby devise ruby-on-rails-3.2

我正在使用devise来允许用户登录网站。身份验证密钥设置为用户名,该用户名是唯一的。同样独特的是提供的电子邮件地址。似乎某种方式devise已经发现电子邮件地址应该是唯一的。这很好。

现在我想让人们更改密码。我链接到我的edit_user_registration_path,但请注意允许用户更改其电子邮件地址。一种选择是将reconfirmable设置为false ...但我认为我不想允许用户更改其电子邮件地址。

我想我可以从devise视图中删除该字段,但从理论上讲,精心设计的PUT方法仍然可以让他们更改自己的电子邮件地址。有没有办法阻止这个字段变得可变?或者让电子邮件地址重新确认是否更好?

2 个答案:

答案 0 :(得分:1)

请参阅http://trak3r.blogspot.com/2007/03/immutable-activerecord-attributes.html

所以

class User
  def email=(address)
    if new_record?
      write_attribute(:email, address)
    else
      raise 'email is immutable!'
    end
  end 
end

答案 1 :(得分:1)

就我而言,“回答”只是允许人们编辑他们的电子邮件地址。有足够的用例可以让某人合法地想要更改他们的电子邮件地址,我认为在试图阻止它时没有任何损害。