Ruby on rails 在Facebook注册后重定向到页面

Ruby on rails 在Facebook注册后重定向到页面,ruby-on-rails,facebook,ruby-on-rails-4,omniauth,facebook-oauth,Ruby On Rails,Facebook,Ruby On Rails 4,Omniauth,Facebook Oauth,我正在尝试在成功注册Facebook(未登录)后重定向用户 在用户第一次注册后,我想重定向到/getstart/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.en

我正在尝试在成功注册Facebook(未登录)后重定向用户

在用户第一次注册后,我想重定向到
/getstart/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
我的用户模型:

Facebook设置
有人能帮我设置吗?

我通过添加到我的用户模型解决了这个问题

attr_accessor `just_signed_up`
并在
User.find\u for\u facebook\u oauth
中设置它,在我创建新用户的块的这一部分(
first\u或\u create
block)

编辑:更多解释

因此在Ruby中(不是Rails),有一个类方法/宏叫做
attr\u accessor
(实际上还有
attr\u reader
attr\u writer
attr\u accessor
是调用其他两个的缩写)

如果您在您的用户模型中

class User
  attr_accessor :some_attribute
那你就可以表演了

u = User.first
u.some_attribute = 'asdf'
u.some_attribute # => 'asdf'
但这个属性不会保存到DB中,所以它可以在Rails模型中用作一些值的临时存储

另一件需要知道的事情是,在Ruby中只有两个“值”为false,它们是
false
nil

使用这两个技巧,您可以创建一个新用户并在对象上临时设置此标志

u=用户创建 u、 刚刚注册=正确 u、 刚刚注册#=>对 u、 重新加载!#从数据库中获取记录 u、 刚刚注册#=>零


由于nil为false,除了您刚刚创建的用户之外,其他所有用户的检查都将失败

那么,这有用吗?如果没有任何错误?嘿,比利,我尝试了很多变化,但似乎没有任何效果。上面的代码是我的简单回调控制器。在第一次注册后,我需要有人帮助我实现重定向:)你最好提供错误,否则很难知道发生了什么。如果我没有用正确的方式书写,那么就不会有错误:/问题是我不知道从哪里开始。嘿,Michael,谢谢。因为我对Rails还相当陌生,所以我不太明白这一点。你能让它更友好一些吗?:)好的,你能添加你的
用户的内容吗。在问题中找到\u for\u facebook\u oauth
方法吗?还可以查看我的扩展答案。好的,在
User中。在
create
add
User.just\u signed\u=true
之后的else子句中查找facebook\u oauth
,然后您可以在
omniauth\u callbacks\u controller
中检查它。重定向后它将变为nil并保持不变。所以我的模型应该是这样->?酷:)这是我的Omniauth回调控制器->。我怎么把它放在这里?
u = User.first
u.some_attribute = 'asdf'
u.some_attribute # => 'asdf'