【发布时间】:2013-04-06 20:28:14
【问题描述】:
我正在将 Omniauth 和 Devise 集成到我的第一个 ruby on rails 应用程序中。目前在谷歌工作。
它有效,我喜欢它。我可以通过点击我的应用程序中的链接成功注册,在 google 中进行身份验证,然后重定向回来......一切都符合预期。
我需要支持当前用户邀请新用户一起开展项目。为此,我允许当前用户创建新用户行,并指定新用户的电子邮件地址。该行作为存根添加,因此可以将工作分配给新用户。
我希望新用户在此之后的某个时间点通过单击我的应用程序中的 google 链接、在 google 中进行身份验证,然后重定向回我的应用程序来注册。
当这种情况发生时,我得到这个错误:
1 error prohibited this user from being saved:
Email has already been taken
我明白为什么,但我正在努力寻找正确的钩子,我可以并且应该使用更改行为以允许注册用户接管为他创建的存根用户行。
编辑: 相关宝石列表(我认为):
- devise (2.2.3)
- oauth (0.4.7)
- oauth2 (0.8.1)
- omniauth (1.1.3)
- omniauth-facebook (1.4.1, 1.4.0)
- omniauth-google (1.0.2)
- omniauth-google-oauth2 (0.1.13)
- omniauth-oauth (1.0.1)
- omniauth-oauth2 (1.1.1, 1.0.3)
编辑 - 设计模块
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
【问题讨论】:
-
您目前使用什么设计模块?
-
这是您要找的吗?设计(2.2.3)
-
不,devise 有一些您可以使用或不使用的模块,例如
registerable、confirmable等等。 -
明白了,谢谢和抱歉!仅供参考,我基本上遵循了 ryanb 的 railscast ..... 从我的 user.rb 设计中:database_authenticatable,:registerable,:recoverable,:rememberable,:trackable,:validatable,:omniauthable
-
好的,尝试删除
registerable模块。
标签: ruby-on-rails ruby-on-rails-3 devise omniauth