【问题标题】:Omniauth with Devise - Handling invitation scenariosOmniauth with Devise - 处理邀请场景
【发布时间】: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 有一些您可以使用或不使用的模块,例如 registerableconfirmable 等等。
  • 明白了,谢谢和抱歉!仅供参考,我基本上遵循了 ryanb 的 railscast ..... 从我的 user.rb 设计中:database_authenticatable,:registerable,:recoverable,:rememberable,:trackable,:validatable,:omniauthable
  • 好的,尝试删除registerable模块。

标签: ruby-on-rails ruby-on-rails-3 devise omniauth


【解决方案1】:

自我回答....

我从来没有找到修改行为的方法,所以进行了修改。我创建了一个新表来保存邀请,当邀请未注册的人时插入该邀请。受邀者第一次访问网站时,我会自动接受邀请。

似乎应该有一个更优雅的解决方案...随时分享给后代!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多