【问题标题】:Rails 3 + devise - email + user creationRails 3 + 设计 - 电子邮件 + 用户创建
【发布时间】:2011-03-01 14:01:40
【问题描述】:

我是 Rails 新手。我正在尝试使用 Devise 创建用户管理 + 登录系统。一切都很好,除了两件事:

1) 注册时有什么方法可以删除“电子邮件”字段和/或验证?当从模型中删除 :validatable 时,密码也不会验证。

2) 在系统中进行用户管理的最佳方法是什么?诸如覆盖设计注册之类的东西?

我在谷歌搜索答案并阅读了文档,但没有找到答案。

谢谢。

【问题讨论】:

    标签: ruby-on-rails email authentication login devise


    【解决方案1】:

    1) 您应该删除 :validatable 并在用户模型中编写自己的验证。

    2)您可以在设计中手动创建用户:

    @user = User.new(:field1 => "something", :field2 => "something else", :password => "secret", :password_confirmation => "secret")
    @user.save
    

    如果创建的对象通过验证,它将像设计注册操作一样被创建。

    【讨论】:

    • 2) 不,不是角色管理,而是用户管理。在应用程序中创建用户(手动),而不是使用设计“注册”。也许对此有一些好处?据我了解,我需要在插入数据库之前对密码进行哈希处理。
    • 根据您的评论编辑答案。您不需要自己哈希密码,devise 会为您完成。
    • 谢谢!我不知道。我在控制台中测试了您的代码并生成了密码,但是当我输入 @user.save 时,它​​返回 false。我会试试的——也许是我的错。哪里可以找到这么好的文档?
    • 在控制台@user.errors 中检查验证错误,它会告诉你出了什么问题
    • 谢谢!一切都很好并且工作正常,但现在我遇到了另一个问题。我创建了 UserController 并在此控制器中包含以下方法:显示、编辑、新建、更新等。当我在视图中使用并单击 destroy_user_session_path 时,出现错误 - Couldn't find User with ID=sign_out。似乎调用了 UsersController::show,我该如何解决这个问题?
    【解决方案2】:

    您可以使用

    删除电子邮件验证
      def email_required?
        false
      end
    

    在您的用户模型中

    【讨论】:

    • 它不工作。我在 config/initializers/devise.rb 中更改了“authentication_keys”,并添加了上述方法。但它仍然说,电子邮件是强制性的。有什么想法吗?
    【解决方案3】:

    1) 我不知道从哪个版本开始,但至少在你提出问题的时候,devise github page 已经有一个教程如何做到这一点。 他们概述了两种方法,一种是在这里描述的,如何管理它。您可以保留他们的验证。

    2) 至于 CRUD 用户,他们也有一个 tutorial,它是最近的。

    希望这仍然对某人有所帮助;-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      相关资源
      最近更新 更多