Sha256: 42e08551766e7c5e4f45d4f4be87337db26f5e8b89775e0bd7af5b18f5bd415a

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

module Para
  module Component
    class Crud < Para::Component::Resource
      register :crud, self

      include Para::Component::Exportable

      configurable_on :model_type
      configurable_on :namespaced

      has_many :component_resources, class_name: 'Para::ComponentResource',
               foreign_key: :component_id, autosave: true

      def namespaced?
        case namespaced
        when 'true' then true
        else false
        end
      end

      def resources
        namespaced? ? namespaced_resources : model.all
      end

      def add_resource(resource)
        component_resources.create(resource: resource)
      end

      def remove_resource(resource)
        component_resources.where(resource: resource).first.destroy
      end

      private

      def namespaced_resources
        model.joins(
          "INNER JOIN para_component_resources ON " +
          "para_component_resources.resource_id = #{ model_table_name }.id"
        ).where(
          para_component_resources: { component_id: id }
        )
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
para-0.4.0 app/models/para/component/crud.rb