diff --git a/activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb index da544761145b6..f2318304e64c1 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql/schema_statements.rb @@ -159,7 +159,7 @@ def create_table_definition(name, **options) end def default_type(table_name, field_name) - match = create_table_info(table_name).match(/`#{field_name}` (.+) DEFAULT ('|\d+|[A-z]+)/) + match = create_table_info(table_name)&.match(/`#{field_name}` (.+) DEFAULT ('|\d+|[A-z]+)/) default_pre = match[2] if match if default_pre == "'" diff --git a/activerecord/test/cases/view_test.rb b/activerecord/test/cases/view_test.rb index 36b9df7ba5139..e46cab0b39be7 100644 --- a/activerecord/test/cases/view_test.rb +++ b/activerecord/test/cases/view_test.rb @@ -21,7 +21,7 @@ def setup super @connection = ActiveRecord::Base.connection create_view "ebooks'", <<~SQL - SELECT id, name, status FROM books WHERE format = 'ebook' + SELECT id, name, cover, status FROM books WHERE format = 'ebook' SQL end @@ -58,11 +58,12 @@ def test_views_ara_valid_data_sources def test_column_definitions assert_equal([["id", :integer], ["name", :string], + ["cover", :string], ["status", :integer]], Ebook.columns.map { |c| [c.name, c.type] }) end def test_attributes - assert_equal({ "id" => 2, "name" => "Ruby for Rails", "status" => 0 }, + assert_equal({ "id" => 2, "name" => "Ruby for Rails", "cover" => "hard", "status" => 0 }, Ebook.first.attributes) end