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发生变化”行为的正确方法是什么?在本例中,对用户模型实际进行回调可以吗?对我来说,这是目前最好的方式