From 8b1959c92db6e62f2dbd91734a534e291e04879f Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Tue, 12 Nov 2024 22:46:09 +1300 Subject: [PATCH 1/2] fix add_timestamps in 7.1 --- .../oracle_enhanced/schema_statements.rb | 7 +++++ .../oracle_enhanced/schema_statements_spec.rb | 27 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb b/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb index 6b20e9210..1f2398030 100644 --- a/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb +++ b/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb @@ -622,6 +622,13 @@ def create_alter_table(name) OracleEnhanced::AlterTable.new create_table_definition(name) end + def add_timestamps(table_name, **options) + fragments = add_timestamps_for_alter(table_name, **options) + fragments.each do |fragment| + execute "ALTER TABLE #{quote_table_name(table_name)} #{fragment}" + end + end + def update_table_definition(table_name, base) OracleEnhanced::Table.new(table_name, base) end diff --git a/spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb b/spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb index f6bf2d21f..6185b2949 100644 --- a/spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb +++ b/spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb @@ -387,6 +387,33 @@ class ::TestEmployee < ActiveRecord::Base; end end end + describe "add timestamps" do + before(:each) do + @conn = ActiveRecord::Base.connection + schema_define do + create_table :test_employees, force: true + end + end + + after(:each) do + schema_define do + drop_table :test_employees, if_exists: true + end + end + + it "should add created_at and updated_at" do + class ::TestEmployee < ActiveRecord::Base; end + + expect do + @conn.add_timestamps("test_employees") + end.not_to raise_error + + TestEmployee.reset_column_information + expect(TestEmployee.columns_hash["created_at"]).not_to be_nil + expect(TestEmployee.columns_hash["updated_at"]).not_to be_nil + end + end + describe "ignore options for LOB columns" do after(:each) do schema_define do From a3db6a300cf7b4deec80d930db96819faee79daa Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Wed, 13 Nov 2024 09:16:57 +1300 Subject: [PATCH 2/2] fix tests --- .../oracle_enhanced/schema_statements_spec.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb b/spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb index 6185b2949..0f3c46476 100644 --- a/spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb +++ b/spec/active_record/connection_adapters/oracle_enhanced/schema_statements_spec.rb @@ -393,17 +393,18 @@ class ::TestEmployee < ActiveRecord::Base; end schema_define do create_table :test_employees, force: true end + class ::TestEmployee < ActiveRecord::Base; end end after(:each) do schema_define do drop_table :test_employees, if_exists: true end + Object.send(:remove_const, "TestEmployee") + ActiveRecord::Base.clear_cache! end it "should add created_at and updated_at" do - class ::TestEmployee < ActiveRecord::Base; end - expect do @conn.add_timestamps("test_employees") end.not_to raise_error