Sha256: 17a410823a463f28d29ff9dc93ee2cbc082e3bb60cc35b11d42b7c1c806f6e50

Contents?: true

Size: 1.5 KB

Versions: 5

Compression:

Stored size: 1.5 KB

Contents

module ActiveAdminAddons
  module InputMethods
    def model_name
      valid_object.class.to_s.underscore.tr('/', '_')
    end

    def valid_method
      raise "invalid method given" if method.blank?
      method
    end

    def valid_object
      raise "blank object given" if @object.blank?
      @object
    end

    def object_class
      valid_object.class
    end

    def association_name
      valid_method.to_s.singularize.chomp("_id")
    end

    def method_model
      object_class.reflect_on_association(association_name).try(:klass) ||
        association_name.classify.constantize
    end

    def tableize_method
      association_name.tableize
    end

    def input_related_items
      valid_object.send(tableize_method)
    rescue NoMethodError
      raise "no association called #{tableize_method} on #{model_name} model"
    end

    def input_value
      valid_object.send(valid_method)
    end

    def translated_method
      valid_object.class.human_attribute_name(valid_method)
    end

    def url_from_method
      url = ["/"]

      if ActiveAdmin.application.default_namespace.present?
        url << "#{ActiveAdmin.application.default_namespace}/"
      end

      url << tableize_method
      url.join("")
    end

    def build_virtual_attr
      attribute_name = "virtual_#{valid_method}_attr"
      fail "#{attribute_name} is already defined" if valid_object.respond_to?(attribute_name)
      valid_object.singleton_class.send(:attr_accessor, attribute_name)
      attribute_name
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
activeadmin_addons-1.2.0 lib/activeadmin_addons/support/input_helpers/input_methods.rb
activeadmin_addons-1.1.2 lib/activeadmin_addons/support/input_helpers/input_methods.rb
activeadmin_addons-1.1.1 lib/activeadmin_addons/support/input_helpers/input_methods.rb
activeadmin_addons-1.1.0 lib/activeadmin_addons/support/input_helpers/input_methods.rb
activeadmin_addons-1.0.1 lib/activeadmin_addons/support/input_helpers/input_methods.rb