0

我在这里通过这个 railscasts 剧集实现 twitter/facebook OAuth 登录:

http://railscasts.com/episodes/235-omniauth-part-1

我正在使用 github 上的 Omniauth README 中的代码:

  def oauthing
    auth = request.env['omniauth.auth']
    current_user.authentications.find_or_create_by_provider_and_uid(auth['provider'], auth['uid'])
    flash[:notice] = "Authentication Successful"
    redirect_to '/'
  end

它会引发有关属于 ActiveRecord 的方法“create”的错误。现在,如果我删除“_or_create”,我可以让上面的代码工作,但现在我只能使用 Twitter/Facebook OAuth 来验证现有用户,而不能创建新用户。

我疯狂地用谷歌搜索,但没有成功。我怎样才能完成这项工作,以便我可以通过 Omniauth 创建帐户,而不仅仅是进行身份验证?

4

1 回答 1

0

拆分查询并尝试:

is_user = current_user.authentications.find_by_provider_and_uid(auth['provider'], auth['uid'])

current_user.authentications.create(:provider => auth['provider'], :uid => auth['uid']) if is_user.nil?
于 2012-04-13T06:31:39.673 回答