aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2015-01-23 12:47:41 -0700
committerSean Griffin <sean@thoughtbot.com>2015-01-23 12:50:01 -0700
commit96e504ec8af149962312c13dd418e13e4c74ce86 (patch)
treeedc8ce3f4de566ec5c1e90472957d5b381f10547 /activerecord/lib
parentb9d668f8cb466ab70e107e8ed6e1df2d28c25f31 (diff)
downloadrails-96e504ec8af149962312c13dd418e13e4c74ce86.tar.gz
rails-96e504ec8af149962312c13dd418e13e4c74ce86.tar.bz2
rails-96e504ec8af149962312c13dd418e13e4c74ce86.zip
Errors raised in `type_cast_for_database` no longer raise on assignment
Fixes #18580.
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/attribute_methods/dirty.rb2
-rw-r--r--activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb2
2 files changed, 2 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/attribute_methods/dirty.rb b/activerecord/lib/active_record/attribute_methods/dirty.rb
index bce9c5e1e3..06d87ee01e 100644
--- a/activerecord/lib/active_record/attribute_methods/dirty.rb
+++ b/activerecord/lib/active_record/attribute_methods/dirty.rb
@@ -165,7 +165,7 @@ module ActiveRecord
end
def store_original_raw_attribute(attr_name)
- original_raw_attributes[attr_name] = @attributes[attr_name].value_for_database
+ original_raw_attributes[attr_name] = @attributes[attr_name].value_for_database rescue nil
end
def store_original_raw_attributes
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
index 03dfd29a0a..52dce6291a 100644
--- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
@@ -53,7 +53,7 @@ module ActiveRecord
class SQLite3String < Type::String # :nodoc:
def type_cast_for_database(value)
if value.is_a?(::String) && value.encoding == Encoding::ASCII_8BIT
- value.encode(Encoding::UTF_8)
+ value.encode(Encoding::UTF_8, undef: :replace)
else
super
end