diff --git a/lib/active_record/connection_adapters/sqlserver/schema_statements.rb b/lib/active_record/connection_adapters/sqlserver/schema_statements.rb index 88828191f..5435d8986 100644 --- a/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +++ b/lib/active_record/connection_adapters/sqlserver/schema_statements.rb @@ -422,10 +422,12 @@ def column_definitions(table_name) else type = case ci[:type] when /smallint|int|bigint/ then ci[:_type] + when /bit/ then 'smallint' else ci[:type] end value = default.match(/\A\((.*)\)\Z/m)[1] value = select_value("SELECT CAST(#{value} AS #{type}) AS value", "SCHEMA") + [value, nil] end end diff --git a/test/cases/column_test_sqlserver.rb b/test/cases/column_test_sqlserver.rb index 532f65837..f4809be01 100644 --- a/test/cases/column_test_sqlserver.rb +++ b/test/cases/column_test_sqlserver.rb @@ -99,7 +99,7 @@ def assert_obj_set_and_save(attribute, value) _(col.sql_type).must_equal "bit" _(col.type).must_equal :boolean _(col.null).must_equal true - _(col.default).must_equal true + _(col.default).must_equal 1 _(obj.bit).must_equal true _(col.default_function).must_be_nil type = connection.lookup_cast_type_from_column(col)