Rails,DEVISE – 防止用户更改其电子邮件地址
当用户在我的应用程序上注册时,他们必须确认他们的电子邮件,由Devise + Rails 3提供支持。
电子邮件地址定义了用户的权限,因此我不希望用户在注册后能够更改它。 删除:来自users.rb attr_accessible的电子邮件,该电子邮件适用于登录用户,但现在用户无法注册。
处理这个问题的正确方法是什么? 因此用户无法更新他们的电子邮件,但可以使用设计注册他们的电子邮件。
谢谢
这是自定义validation器的完美案例。 从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
attr_readonly:电子邮件
这很容易解决问题。
https://groups.google.com/forum/#!topic/plataformatec-devise/skCarCHr0p8
我个人会留下attr_accessible:电子邮件,只需从编辑视图中删除电子邮件字段即可。 此外,您还需要从更新操作中的params散列中删除任何电子邮件参数。
- 即使在重新启动服务器之后,Rails dev环境也不会更新html / css / assets
- rails:一个带有两个不相关模型的simple_form?
- 设计如何将当前用户关联到post?
- 使用mingw编译mysql2时出现分段错误
- Rails依赖于表单中的collection_select字段
- 如何让Rails 3资产更快地预编译?
- 在Ubuntu上运行Sidekiq作为守护进程
- Rails 3.1与application.html.erb中的javascript_include_tag问题
- 连接到S3时,获取“SSL_connect返回= 1 errno = 0状态=错误:证书validation失败”