Sha256: 6c4a677d27d763d28d8bd2e770a827632a92cdbaf053ac1d467532eb82cf3a93

Contents?: true

Size: 993 Bytes

Versions: 4

Compression:

Stored size: 993 Bytes

Contents

module ActiveAdminAddons
  class CustomBuilder
    attr_accessor :context, :model, :args, :block

    def initialize(context, model, *args, &block)
      @context = context
      @model = model
      @args = *args
      @block = block
    end

    def render
    end

    def self.render(context, model, *args, &block)
      new(context, model, *args, &block).render
    end

    protected

    def data
      @data ||= block ? block.call(model) : model.send(attribute)
    end

    def options
      @options ||= has_opts? ? args.last : {}
    end

    # attachment_column :foto
    # attachment_column :foto, style: :hola
    # attachment_column "Mi Foto", :foto
    # attachment_column "Mi Foto", :foto, {}
    # attachment_column :foto do
    # end
    def attribute
      @attribute ||= has_label? ? args[1] : args[0]
    end

    def has_label?
      has_opts? ? args.length == 3 : args.length == 2
    end

    def has_opts?
      @has_opts ||= args.last.is_a?(Hash)
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
activeadmin_addons-0.2.7 lib/activeadmin_addons/support/custom_builder.rb
activeadmin_addons-0.2.6 lib/activeadmin_addons/support/custom_builder.rb
activeadmin_addons-0.2.5 lib/activeadmin_addons/support/custom_builder.rb
activeadmin_addons-0.2.4 lib/activeadmin_addons/support/custom_builder.rb