Ruby on rails Rails:Authlogic&;用户会话&;回调
每次用户的Ruby on rails Rails:Authlogic&;用户会话&;回调,ruby-on-rails,callback,authlogic,Ruby On Rails,Callback,Authlogic,每次用户的当前登录\u ip发生更改时,我都要调用服务查找位置数据 现在,实现这一点的一种方法是 class User #... after_save :kickoff_job_to_find_location, if: :current_login_ip_changed? end 但是,如果可以的话,我很想避免添加ActiveRecord回调 因此,我采用如下方式定制UserSession: class UserSession < Authlogic::Session::Bas
当前登录\u ip
发生更改时,我都要调用服务查找位置数据
现在,实现这一点的一种方法是
class User
#...
after_save :kickoff_job_to_find_location, if: :current_login_ip_changed?
end
但是,如果可以的话,我很想避免添加ActiveRecord回调
因此,我采用如下方式定制UserSession:
class UserSession < Authlogic::Session::Base
before_create :set_update_location
def should_update_location?
@should_update_location
end
private
def set_update_location
@should_update_location ||= record && (record.current_login_ip != record.current_login_ip_was)
end
end
class UserSession < Authlogic::Session::Base
before_create :update_location_if_new_or_changed
private
def update_location_if_new_or_changed
if record && (!record.persisted? || (record.current_login_ip != record.current_login_ip_was))
puts "calling set_update_location"
end
end
end
但这似乎一点也不好。所以我现在已经放弃了,并在用户上实现了after\u save
hook
执行这种“如果当前登录ip发生变化”行为的正确方法是什么?在本例中,对用户模型实际进行回调可以吗?对我来说,这是目前最好的方式