Skip to content

Commit be09eb5

Browse files
committed
Use default function as default insert value when present
Previously, if a column defined a function as its default value, the function would never be called during fixture insertion.
1 parent 5520bd8 commit be09eb5

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,11 @@ def returning_column_values(result)
138138
end
139139

140140
def default_insert_value(column)
141-
column.default
141+
if column.default_function
142+
Arel.sql(column.default_function)
143+
else
144+
column.default
145+
end
142146
end
143147
end
144148
end

activerecord/test/cases/fixtures_test.rb

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
require "models/admin/account"
77
require "models/admin/randomly_named_c1"
88
require "models/admin/user"
9+
require "models/aircraft"
910
require "models/author"
1011
require "models/binary"
1112
require "models/book"
@@ -112,8 +113,6 @@ def test_bulk_insert_multiple_table_with_a_multi_statement_query
112113
end
113114

114115
def test_bulk_insert_with_a_multi_statement_query_raises_an_exception_when_any_insert_fails
115-
require "models/aircraft"
116-
117116
assert_equal false, Aircraft.columns_hash["wheels_count"].null
118117
fixtures = {
119118
"aircraft" => [
@@ -478,6 +477,20 @@ def test_insert_with_datetime
478477
assert first
479478
end
480479

480+
def test_insert_with_default_function
481+
create_fixtures("aircrafts")
482+
483+
aircraft = Aircraft.find_by(name: "boeing-with-no-manufactured-at")
484+
assert_equal Time.now.utc.strftime("%Y-%m-%d %H:%M:%S"), aircraft.manufactured_at.strftime("%Y-%m-%d %H:%M:%S")
485+
end
486+
487+
def test_insert_with_default_value
488+
create_fixtures("aircrafts")
489+
490+
aircraft = Aircraft.find_by(name: "boeing-with-no-wheels")
491+
assert_equal 0, aircraft.wheels_count
492+
end
493+
481494
def test_logger_level_invariant
482495
previous_logger = ActiveRecord::Base.logger
483496
ActiveRecord::Base.logger = ActiveSupport::Logger.new(nil)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
no_wheels:
2+
name: boeing-with-no-wheels
3+
manufactured_at: 2024-01-01
4+
5+
no_manufactured_at:
6+
name: boeing-with-no-manufactured-at
7+
wheels_count: 2

0 commit comments

Comments
 (0)