0

我正在将 Omniauth 和 Devise 集成到我的第一个 ruby​​ on rails 应用程序中。目前在谷歌工作。

它有效,我喜欢这一切。我可以通过点击我的应用程序中的链接成功注册,在谷歌中进行身份验证,然后重定向回来......一切都符合预期。

我需要支持当前用户邀请新用户一起开展项目。为此,我允许当前用户创建新用户行,并指定新用户的电子邮件地址。该行作为存根添加,因此可以将工作分配给新用户。

我希望新用户在此之后的某个时候通过单击我的应用程序中的 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
4

1 回答 1

0

自答....

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

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

于 2013-04-06T12:28:14.323 回答