Improved error handling. If string in invalid charset (e. g. on binary fields), .blank? will fail (call it later).

This commit is contained in:
Martin Edenhofer 2017-10-16 15:46:41 +02:00
parent 228a0df54a
commit 57c6a25357

View file

@ -18,7 +18,6 @@ module ApplicationModel::ChecksAttributeValuesAndLength
def check_attribute_values_and_length def check_attribute_values_and_length
columns = self.class.columns_hash columns = self.class.columns_hash
attributes.each do |name, value| attributes.each do |name, value|
next if value.blank?
next if !value.instance_of?(String) next if !value.instance_of?(String)
column = columns[name] column = columns[name]
next if !column next if !column
@ -27,6 +26,8 @@ module ApplicationModel::ChecksAttributeValuesAndLength
self[name].force_encoding('BINARY') self[name].force_encoding('BINARY')
end end
next if value.blank?
# strip null byte chars (postgresql will complain about it) # strip null byte chars (postgresql will complain about it)
if column.type == :text if column.type == :text
if Rails.application.config.db_null_byte == false if Rails.application.config.db_null_byte == false