Sha256: 6cd20a1914d4f0498e6e66bdaaa09c4f6ebc58a7fc08920f9508dd2dfe8c5e72

Contents?: true

Size: 883 Bytes

Versions: 7

Compression:

Stored size: 883 Bytes

Contents

if Enjoy.mongoid?
  module Enjoy::HashField
    extend ActiveSupport::Concern

    module ClassMethods
      def enjoy_cms_hash_field(name, opts = {})
        field "#{name}_hash", opts

        class_eval <<-EVAL
          def #{name}_str=(val)
            begin
              self.#{name}_hash = JSON.parse(val)
            rescue
              self[:#{name}_str] = val
            end
          end
          def #{name}_str
            self[:#{name}_str] ||= self.#{name}.to_json
          end
          def #{name}
            self.#{name}_hash
          end

          validate do
            if self.#{name}_str != self.#{name}.to_json
              self.errors.add(:#{name}, "Неверный формат данных")
            else
              self.remove_attribute :#{name}_str
            end
            true
          end
        EVAL
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
enjoy_cms-0.3.7 app/models/concerns/enjoy/hash_field.rb
enjoy_cms-0.3.6.2 app/models/concerns/enjoy/hash_field.rb
enjoy_cms-0.3.6.1 app/models/concerns/enjoy/hash_field.rb
enjoy_cms-0.3.6 app/models/concerns/enjoy/hash_field.rb
enjoy_cms-0.3.5 app/models/concerns/enjoy/hash_field.rb
enjoy_cms-0.3.4 app/models/concerns/enjoy/hash_field.rb
enjoy_cms-0.3.3 app/models/concerns/enjoy/hash_field.rb