Sha256: 5e6fd88da731c314ddf229ad67064a436852492985af8734eb3e738a4574aaa7

Contents?: true

Size: 1.43 KB

Versions: 19

Compression:

Stored size: 1.43 KB

Contents

module AdminIt
  module MongoidData
    #
    module Field
      def self.included(base)
        base.class_eval do
          class << self
            attr_accessor :assoc
          end
          class_attr_reader :assoc
        end
      end

      protected

      def read_value(entity)
        value = entity.send(name)
        if type == :relation
          if assoc.collection?
            value.nil? || value.empty? ? [] : value.map(&:id).to_json
          else
            value.nil? ? nil : value.id
          end
        else
          value
        end
      end

      def show_value(entity)
        value = entity.send(name)
        if type == :relation
          resource = AdminIt.resources.values.find do |r|
            r.entity_class == assoc.klass
          end
          return I18n.t('admin_it.relation.no_resource') if resource.nil?
          context = resource.contexts.find { |c| c <= ShowContext }
          return I18n.t('admin_it.relation.no_context') if context.nil?
          if assoc.collection?
            if value.count == 0
              I18n.t('admin_it.collection.no_data')
            else
              v = context.read(value.first)
              v.nil? ? '' : context.read(value.first) + ' ...'
            end
          else
            context.read(value)
          end
        else
          value
        end
      end

      def write_value(entity, value)
        entity.send("#{name}=", value)
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
admin_it-1.3.8 lib/admin_it/data/mongoid/field.rb
admin_it-1.3.7 lib/admin_it/data/mongoid/field.rb
admin_it-1.3.6 lib/admin_it/data/mongoid/field.rb
admin_it-1.3.5 lib/admin_it/data/mongoid/field.rb
admin_it-1.3.4 lib/admin_it/data/mongoid/field.rb
admin_it-1.3.3 lib/admin_it/data/mongoid/field.rb
admin_it-1.3.2 lib/admin_it/data/mongoid/field.rb
admin_it-1.3.1 lib/admin_it/data/mongoid/field.rb
admin_it-1.3.0 lib/admin_it/data/mongoid/field.rb
admin_it-1.2.8 lib/admin_it/data/mongoid/field.rb
admin_it-1.2.7 lib/admin_it/data/mongoid/field.rb
admin_it-1.2.6 lib/admin_it/data/mongoid/field.rb
admin_it-1.2.5 lib/admin_it/data/mongoid/field.rb
admin_it-1.2.4 lib/admin_it/data/mongoid/field.rb
admin_it-1.2.3 lib/admin_it/data/mongoid/field.rb
admin_it-1.2.2 lib/admin_it/data/mongoid/field.rb
admin_it-1.2.1 lib/admin_it/data/mongoid/field.rb
admin_it-1.2.0 lib/admin_it/data/mongoid/field.rb
admin_it-1.1.0 lib/admin_it/data/mongoid/field.rb