在我的用户模型中,我有一个“sign_in_count”列,在创建用户时我最初将其设置为 1:
class User < ActiveRecord::Base
before_save { self.sign_in_count = 1 }
end
这在我进入 rails 控制台时有效,我可以返回 1:
u = User.last
u.sign_in_count
=> 1
然后我在我的 SessionsHelper 中创建了一个方法:
def sign_in_count(user)
user.sign_in_count += 1
end
然后我像这样称它为我的 SessionsController:
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
log_in user
sign_in_count(user)
.
.
.
end
但是 sign_in_count 似乎永远不会增加。我登录完全正常。我没有得到任何错误或任何东西。我检查了控制台,sign_in_count 总是 1。知道我在这里做错了什么吗?
最佳答案
使用 increment
方法 ( detail ) 而不是,像这样:
def sign_in_count(user)
user.increment!(:sign_in_count)
end
还有,请改before_save
回调到 before_create
打回来。我们只是初始化 sign_in_count
仅在创建新用户时进行一次。如果您想减少
sign_in_count
, 请使用 decrement
.
关于ruby-on-rails - Rails 递增登录计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36074024/