This repository was archived by the owner on Apr 22, 2025. It is now read-only.
File tree 2 files changed +21
-2
lines changed
2 files changed +21
-2
lines changed Original file line number Diff line number Diff line change @@ -39,8 +39,8 @@ def name_for_encoded_id_slug
39
39
# When duplicating an ActiveRecord object, we want to reset the memoized encoded_id
40
40
def dup
41
41
super . tap do |new_record |
42
- new_record . instance_variable_set ( : @encoded_id, nil )
43
- new_record . instance_variable_set ( : @slugged_encoded_id, nil )
42
+ new_record . send ( :remove_instance_variable , : @encoded_id) if new_record . instance_variable_defined? ( :@encoded_id )
43
+ new_record . send ( :remove_instance_variable , : @slugged_encoded_id) if new_record . instance_variable_defined? ( :@slugged_encoded_id )
44
44
end
45
45
end
46
46
end
Original file line number Diff line number Diff line change @@ -162,4 +162,23 @@ def test_duplicated_record_has_different_encoded_id
162
162
def test_duplicated_record_has_different_slugged_encoded_id
163
163
refute_equal model . slugged_encoded_id , model . dup . slugged_encoded_id
164
164
end
165
+
166
+ def test_both_encoded_id_and_slugged_id_are_recalculated_on_duplication
167
+ initial_encoded_id = model . encoded_id
168
+ initial_slugged_encoded_id = model . slugged_encoded_id
169
+ new_model = model . dup
170
+ refute_equal initial_encoded_id , new_model . encoded_id
171
+ refute_equal initial_slugged_encoded_id , new_model . slugged_encoded_id
172
+ end
173
+
174
+ def test_both_encoded_id_and_slugged_id_are_recalculated_on_duplication_and_persisted
175
+ initial_encoded_id = model . encoded_id
176
+ initial_slugged_encoded_id = model . slugged_encoded_id
177
+ new_model = model . dup
178
+ new_model . save
179
+ refute_equal initial_encoded_id , new_model . encoded_id
180
+ refute_equal initial_slugged_encoded_id , new_model . slugged_encoded_id
181
+ refute_nil new_model . encoded_id
182
+ refute_nil new_model . slugged_encoded_id
183
+ end
165
184
end
You can’t perform that action at this time.
0 commit comments