Skip to content

Commit 0e3e0d1

Browse files
authored
Merge pull request rails#53436 from baarde/deserialize-auto-populated-columns
Deserialize auto populated columns on Active Record object creation
2 parents 8fded65 + fdfe0fb commit 0e3e0d1

File tree

3 files changed

+4
-1
lines changed

3 files changed

+4
-1
lines changed

activerecord/lib/active_record/persistence.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -930,7 +930,7 @@ def _create_record(attribute_names = self.attribute_names)
930930
)
931931

932932
returning_columns.zip(returning_values).each do |column, value|
933-
_write_attribute(column, value) if !_read_attribute(column)
933+
_write_attribute(column, type_for_attribute(column).deserialize(value)) if !_read_attribute(column)
934934
end if returning_values
935935
end
936936

activerecord/test/cases/persistence_test.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ def test_fills_auto_populated_columns_on_creation
6363
assert_not_nil record.modified_time_without_precision
6464
assert_not_nil record.modified_time_function
6565

66+
assert_equal "A", record.binary_default_function
67+
6668
if supports_identity_columns?
6769
klass = Class.new(ActiveRecord::Base) do
6870
self.table_name = "postgresql_identity_table"

activerecord/test/schema/postgresql_specific_schema.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
t.string :char2, limit: 50, default: "a varchar field"
4242
t.text :char3, default: "a text field"
4343
t.bigint :bigint_default, default: -> { "0::bigint" }
44+
t.binary :binary_default_function, default: -> { "convert_to('A', 'UTF8')" }
4445
t.text :multiline_default, default: "--- []
4546
4647
"

0 commit comments

Comments
 (0)