0

我使用Facebook,omniauth宝石与设计出应对注册用户 以下是我在我的回调给点用户只需在Rails的与Facebook首次登录4

class CallbacksController < Devise::OmniauthCallbacksController 
    def facebook 
    @user = User.from_omniauth(request.env["omniauth.auth"]) 
    if @user.persisted? 
     flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook" 
     sign_in_and_redirect @user 
    else 
     session["devise.facebook_data"] = request.env["omniauth.auth"] 
     redirect_to new_user_registration_url 
    end 
    end 
end 

我想要添加到每个新用户,7000点,他们第一次注册。 在上面的代码中,我试图添加resource.update(points: 7000),它确实有效,当用户注册时,他得到7000分,问题是当我退出时,再次登录的数字是7000,尽管它应该更少用户使用了其中的一些点。

回答

2

你必须在users表中的列称为"sign_in_count",当用户注册的第一次应该是0,检查它是否为零,则加7000,如果不是不添加任何

喜欢的东西这:

resource.update(points: 7000) if resource.sign_in_count == 0 
+0

你会写入迁移文件? –

+0

@MikeMcCallen您不需要任何迁移,如果您正在使用设计,那么您已经拥有该列。 –

+0

我以前已经陷入这个陷阱,直接编辑schema.rb,结果真的很糟糕,因为不建议手动更改它。它会安全吗?你怎么看?我确实找到了“sign_in_count,0默认... –

相关问题