我正在通过此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来验证现有用户,而不是创建新用户。
我像疯了一样用Google搜索,但没有成功。我如何才能完成这项工作,以便通过Omniauth创建帐户而不仅仅是进行身份验证?
答案 0 :(得分: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?