diff --git a/lib/devise/models/trackable.rb b/lib/devise/models/trackable.rb index f617a932..62a6fc9c 100644 --- a/lib/devise/models/trackable.rb +++ b/lib/devise/models/trackable.rb @@ -11,6 +11,14 @@ module Devise # * last_sign_in_ip - Holds the remote ip of the previous sign in # module Trackable + module ModuleMethods + extend self + + def required_fields + [:current_sign_in_at, :current_sign_in_ip, :last_sign_in_at, :last_sign_in_ip, :sign_in_count] + end + end + def update_tracked_fields!(request) old_current, new_current = self.current_sign_in_at, Time.now.utc self.last_sign_in_at = old_current || new_current diff --git a/test/models/trackable_test.rb b/test/models/trackable_test.rb index a55ea69c..7ca5374c 100644 --- a/test/models/trackable_test.rb +++ b/test/models/trackable_test.rb @@ -1,5 +1,13 @@ require 'test_helper' class TrackableTest < ActiveSupport::TestCase - + test 'required_fields should contain the fields that Devise uses' do + assert_equal Devise::Models::Trackable::ModuleMethods.required_fields.sort, [ + :current_sign_in_at, + :current_sign_in_ip, + :last_sign_in_at, + :last_sign_in_ip, + :sign_in_count + ] + end end