1

devise用来允许用户登录网站。身份验证密钥设置为用户名,该用户名是唯一的。提供的电子邮件地址也是独一无二的。似乎不知何故devise已经弄清楚电子邮件地址应该是唯一的。所以这很好。

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

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

4

2 回答 2

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
于 2012-08-29T18:11:16.090 回答
1

就我而言,“答案”只是允许人们编辑他们的电子邮件地址。有足够多的用例可以让某人合法地想要更改他们的电子邮件地址,我认为尝试阻止它并没有什么害处。

于 2012-11-19T17:57:24.690 回答