[英]Redirect to Page after Facebook Sign Up
我正在嘗試在成功完成Facebook注冊(未登錄)后重定向用戶。
我想在用戶首次注冊后重定向到/getstarted/welcome
。
我的omniauth回調是:
def facebook
# You need to implement the method below in your model (e.g. app/models/user.rb)
@user ||=
User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
if @user.persisted?
# This will throw if @user is not activated
sign_in_and_redirect @user, event: :authentication
if is_navigational_format?
set_flash_message(:notice, :success, kind: "Facebook")
end
else
session["devise.facebook_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
為了設計我用
def after_sign_up_path_for(source)
'/getstarted/welcome'
end
我的用戶模型:
def self.find_for_facebook_oauth(auth, signed_in_resource = nil)
user = User.where(provider: auth.provider, uid: auth.uid).first
if user.present?
user
else
user = User.create(first_name:auth.extra.raw_info.first_name,
last_name:auth.extra.raw_info.last_name,
facebook_link:auth.extra.raw_info.link,
user_name:auth.extra.raw_info.name,
provider:auth.provider,
uid:auth.uid,
email:auth.info.email,
password:Devise.friendly_token[0,20])
end
end
有人可以幫我設置這個嗎?
我通過添加到我的用戶模型中解決了
attr_accessor `just_signed_up`
和設置在它User.find_for_facebook_oauth
在創建一個新用戶(塊的這部分first_or_create
塊)。
編輯:更多說明
因此,在Ruby(不是Rails)中,有一個稱為attr_accessor
的類方法/宏(實際上也有attr_reader
和attr_writer
, attr_accessor
是調用其他兩個的簡寫)
如果您在用戶模型中寫
class User
attr_accessor :some_attribute
這樣你就可以執行
u = User.first
u.some_attribute = 'asdf'
u.some_attribute # => 'asdf'
但是此屬性不會保存到DB,因此可以用作Rails模型中某些值的臨時存儲。
要知道的另一件事是,在Ruby中只有兩個“ false”值是false,即false
和nil
。
使用這兩個技巧,您可以創建一個新用戶並在對象上臨時設置此標志
u = User.create u.just_signed_up = true u.just_signed_up#=> true u.reload! #從數據庫u.just_signed_up獲取記錄#=> nil
並且由於nil為假,因此除您剛剛創建的用戶外,此檢查對所有用戶都將失敗!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.