diff options
| author | Johan Van Ryseghem | 2018-02-13 15:21:23 +0100 |
|---|---|---|
| committer | GitHub | 2018-02-13 15:21:23 +0100 |
| commit | 385a9e1b68f3eea51f71386a8f4856477ba6a273 (patch) | |
| tree | e7edf769665abd43702b8805ff1ae4b106f60379 /app/models/concerns | |
| parent | 84891328d7ea0c3b82ba3fa3a73b7c49f317855e (diff) | |
| parent | c259d7e3e24259e14b4756f181b3a8784d8d1919 (diff) | |
| download | chouette-core-385a9e1b68f3eea51f71386a8f4856477ba6a273.tar.bz2 | |
Merge pull request #216 from af83/5416_checksum_attribute
5416 checksum attribute
Diffstat (limited to 'app/models/concerns')
| -rw-r--r-- | app/models/concerns/checksum_support.rb | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/app/models/concerns/checksum_support.rb b/app/models/concerns/checksum_support.rb index a76995b0f..92103798e 100644 --- a/app/models/concerns/checksum_support.rb +++ b/app/models/concerns/checksum_support.rb @@ -24,10 +24,29 @@ module ChecksumSupport self.attributes.values end + def checksum_replace_nil_or_empty_values values + # Replace empty array by nil & nil by VALUE_FOR_NIL_ATTRIBUTE + values + .map { |x| x.present? && x || VALUE_FOR_NIL_ATTRIBUTE } + .map do |item| + item = + if item.kind_of?(Array) + checksum_replace_nil_or_empty_values(item) + else + item + end + end + end + def current_checksum_source - source = self.checksum_attributes.map{ |x| x unless x.try(:empty?) } - source = source.map{ |x| x || VALUE_FOR_NIL_ATTRIBUTE } - source.map(&:to_s).join(SEPARATOR) + source = checksum_replace_nil_or_empty_values(self.checksum_attributes) + source.map{ |item| + if item.kind_of?(Array) + item.map{ |x| x.kind_of?(Array) ? "(#{x.join(',')})" : x }.join(',') + else + item + end + }.join(SEPARATOR) end def set_current_checksum_source |
