File tree Expand file tree Collapse file tree 3 files changed +31
-2
lines changed Expand file tree Collapse file tree 3 files changed +31
-2
lines changed Original file line number Diff line number Diff line change @@ -158,7 +158,7 @@ def _attempt_to_track_change(field_name)
158
158
return unless @record . respond_to? ( field_name )
159
159
return unless @record . respond_to? ( "#{ field_name } =" )
160
160
return unless @record . send ( field_name . to_s ) . nil? || state_changed?
161
- return if @record . will_save_change_to_attribute? ( field_name )
161
+ return if @record . will_save_change_to_attribute? ( field_name ) && ! @record . send ( field_name . to_s ) . nil?
162
162
163
163
@record . send ( "#{ field_name } =" , ( Time . zone || Time ) . now )
164
164
end
Original file line number Diff line number Diff line change 3
3
module Stator
4
4
5
5
MAJOR = 0
6
- MINOR = 8
6
+ MINOR = 9
7
7
PATCH = 0
8
8
PRERELEASE = nil
9
9
Original file line number Diff line number Diff line change 396
396
u . semiactivated_state_at . should eql ( t )
397
397
end
398
398
399
+ it "should not respect an explicitly provided nil value for a timestamp field in create" do
400
+ u = User . create! (
401
+ email : "doug@example.com" ,
402
+ state : "semiactivated" ,
403
+ semiactivated_state_at : nil
404
+ )
405
+
406
+ u . state . should eql ( "semiactivated" )
407
+ u . semiactivated_state_at . should_not be_nil
408
+ end
409
+
410
+ it "should not allow an explicitly provided nil value for a timestamp field to override a state transition" do
411
+ u = User . create! (
412
+ email : "doug@example.com" ,
413
+ state : "semiactivated" ,
414
+ )
415
+
416
+ u . state . should eql ( "semiactivated" )
417
+
418
+ u . activated_state_at = Time . now
419
+ u . save!
420
+
421
+ u . assign_attributes ( activated_state_at : nil )
422
+ u . activate!
423
+
424
+ u . state . should eql ( "activated" )
425
+ u . activated_state_at . should_not be_nil
426
+ end
427
+
399
428
it "should allow opting into track by namespace" do
400
429
z = ZooKeeper . new ( name : "Doug" )
401
430
z . employment_state . should eql ( "hired" )
You can’t perform that action at this time.
0 commit comments