diff --git a/lib/active_record/connection_adapters/sqlserver/core_ext/attribute.rb b/lib/active_record/connection_adapters/sqlserver/core_ext/attribute.rb new file mode 100644 index 000000000..6762b9a1c --- /dev/null +++ b/lib/active_record/connection_adapters/sqlserver/core_ext/attribute.rb @@ -0,0 +1,22 @@ +require 'active_record/attribute' + +module ActiveRecord + class Attribute + + SQLSERVER_DATE_TIME_TYPES = [ + Type::SQLServer::Date, + Type::SQLServer::DateTime, + Type::SQLServer::Time + ].freeze + + prepend Module.new { + def forgetting_assignment + case type + when *SQLSERVER_DATE_TIME_TYPES then with_value_from_database(value) + else super + end + end + } + + end +end diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index aa3171a72..64f8ec7d1 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -8,6 +8,7 @@ require 'active_record/connection_adapters/sqlserver/core_ext/attribute_methods' require 'active_record/connection_adapters/sqlserver/version' require 'active_record/connection_adapters/sqlserver/type' +require 'active_record/connection_adapters/sqlserver/core_ext/attribute' require 'active_record/connection_adapters/sqlserver/database_limits' require 'active_record/connection_adapters/sqlserver/database_statements' require 'active_record/connection_adapters/sqlserver/database_tasks'