Sha256: dea087769dee1fe05d320f002de5f59145f718bab1fbedc24feb7cfe4d4bd6a8

Contents?: true

Size: 979 Bytes

Versions: 46

Compression:

Stored size: 979 Bytes

Contents

module Container
  extend ActiveSupport::Concern

  included do
    before_destroy :destroy_usages!
  end

  class_methods do
    def associated_content(content_name)
      belongs_to content_name
      validates_presence_of content_name

      alias_method :content, content_name

      define_method(:associated_content_name) { content_name }
    end
  end

  def progress_for(user, organization=Organization.current)
    content.progress_for(user, organization)
  end

  def navigable_content_in(organization = Organization.current)
    content.usage_in_organization(organization)
  end

  def content_used_in?(organization)
    navigable_content_in(organization).present?
  end

  private

  # Generally we are calling progress_for for each sibling. That method needs the
  # content. With this includes call we're avoiding the N + 1 queries.
  def siblings
    super.includes(associated_content_name)
  end

  def destroy_usages!
    Usage.destroy_usages_for self
  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
mumuki-domain-9.23.0 app/models/concerns/container.rb
mumuki-domain-9.22.1 app/models/concerns/container.rb
mumuki-domain-9.22.0 app/models/concerns/container.rb
mumuki-domain-9.21.0 app/models/concerns/container.rb
mumuki-domain-9.20.0 app/models/concerns/container.rb
mumuki-domain-9.19.0 app/models/concerns/container.rb
mumuki-domain-9.18.0 app/models/concerns/container.rb
mumuki-domain-9.17.0 app/models/concerns/container.rb
mumuki-domain-9.16.0 app/models/concerns/container.rb
mumuki-domain-9.15.0 app/models/concerns/container.rb
mumuki-domain-9.14.1 app/models/concerns/container.rb
mumuki-domain-9.14.0 app/models/concerns/container.rb
mumuki-domain-9.13.1 app/models/concerns/container.rb
mumuki-domain-9.13.0 app/models/concerns/container.rb
mumuki-domain-9.12.0 app/models/concerns/container.rb
mumuki-domain-9.11.0 app/models/concerns/container.rb
mumuki-domain-9.10.0 app/models/concerns/container.rb
mumuki-domain-9.9.0 app/models/concerns/container.rb
mumuki-domain-9.8.1 app/models/concerns/container.rb
mumuki-domain-9.8.0 app/models/concerns/container.rb