用户首次登录后,我想看看是否有其他用户通过referral_code_used
列引用了他们,并增加了该用户的referral_count
+ 1.目前,用户已登录并被带到home_path
我尝试编写after_sign_in_path_for(resource)方法。就推荐计数而言,这可以完成工作。问题是这会将用户带到users/:id
路径而不是家。
def after_sign_in_path_for(resource)
if resource.sign_in_count > 1
puts "sign in count is greater than 1"
elsif resource.sign_in_count === 1
puts "sign in count is 1"
if resource.referral_code_used != nil
referral_code = resource.referral_code.strip
length = referral_code.length
referral_code = referral_code[5..length]
@user_referral_code = referral_code.to_i
if User.exists?(id: @user_referral_code)
referral_user = User.find_by_id(@user_referral_code)
referral_user.referral_count = referral_user.referral_count + 1
referral_user.save
end
end
puts "signin count = 1"
end
#redirect_to home_path
end
当我输入redirect_to home_path时,它显示Render and/or redirect were called multiple times in this action.
我猜这是在新的会话控制器中,由控制器处理,但我不确定。
当我把它放在应用程序控制器中时,如下所示,没有路由问题,但它多次调用它并为referral_count添加多于1:
before_action :check_referral_code
def check_referral_code
if user_signed_in?
if current_user.sign_in_count > 1
puts "sign in count is greater than 1"
elsif current_user.sign_in_count === 1
puts "sign in count is 1"
if current_user.referral_code_used != nil
referral_code = current_user.referral_code_used.strip
length = referral_code.length
referral_code = referral_code[5..length]
@user_referral_code = referral_code.to_i
if User.exists?(id: @user_referral_code)
referral_user = User.find_by_id(@user_referral_code)
referral_user.referral_count = referral_user.referral_count + 1
referral_user.save
end
end
puts "signin count = 1"
end
end
end
相关路线:
devise_for :users, controllers: { registrations: "users/registrations" }
resources :users
get 'profile/home', to: 'profile#home', as: 'home'
首次登录时检查referral_code_used
的正确方法是什么,并将其他用户信用一次?谢谢!
答案 0 :(得分:2)
尝试用modname/mod.rs
redirect_to home_path
home_path