AnA*_*ice 3 ruby-on-rails devise ruby-on-rails-3
当用户在我的应用程序上注册时,他们必须确认他们的电子邮件,由 Devise + Rails 3 提供支持。
电子邮件地址定义了用户的权限,因此我不希望用户在注册后能够更改它。因此从 users.rb attr_accessible 中删除了 :email ,它适用于登录用户,但现在用户无法注册。
处理这个问题的正确方法是什么?因此,用户无法更新他们的电子邮件,但可以使用设备注册他们的电子邮件。
谢谢
这是自定义验证器的完美案例。从 Rails3 开始,它们比以前更容易做到。
class ImmutableValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
record.errors[attribute] << "cannot be changed after creation" if record.send("#{attribute}_changed?") && !record.new_record?
end
end
class User < ActiveRecord::Base
validates :email, :immutable => true
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2243 次 |
| 最近记录: |