Sha256: 1c917189b98d8f5d767a1045f5d6cd7c917543590d53a46449ab3f51fe8c5418

Contents?: true

Size: 684 Bytes

Versions: 21

Compression:

Stored size: 684 Bytes

Contents

#TODO may use mumukit slug
module WithSlug
  extend ActiveSupport::Concern

  included do
    validates_presence_of :slug
    validates_uniqueness_of :slug
  end

  def import!
    import_from_json! Mumukit::Platform.bibliotheca_bridge.send(self.class.name.underscore, slug)
  end

  def slug_parts
    org, repo = slug.split('/')
    {organization: org, repository: repo}
  end

  module ClassMethods
    def import!(slug)
      transaction do
        item = find_or_initialize_by(slug: slug)
        item.save(validate: false)
        item.import!
      end
    end

    def by_slug_parts!(args)
      find_by!(slug: "#{args[:organization]}/#{args[:repository]}")
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
mumuki-laboratory-5.13.0 app/models/concerns/with_slug.rb
mumuki-laboratory-5.12.1 app/models/concerns/with_slug.rb
mumuki-laboratory-5.12.0 app/models/concerns/with_slug.rb
mumuki-laboratory-5.11.0 app/models/concerns/with_slug.rb
mumuki-laboratory-5.10.4 app/models/concerns/with_slug.rb
mumuki-laboratory-5.10.3 app/models/concerns/with_slug.rb
mumuki-laboratory-5.10.2 app/models/concerns/with_slug.rb
mumuki-laboratory-5.10.1 app/models/concerns/with_slug.rb
mumuki-laboratory-5.10.0 app/models/concerns/with_slug.rb
mumuki-laboratory-5.9.1 app/models/concerns/with_slug.rb
mumuki-laboratory-5.9.0 app/models/concerns/with_slug.rb
mumuki-laboratory-5.8.3 app/models/concerns/with_slug.rb
mumuki-laboratory-5.8.1 app/models/concerns/with_slug.rb
mumuki-laboratory-5.8.0 app/models/concerns/with_slug.rb
mumuki-laboratory-5.7.0 app/models/concerns/with_slug.rb
mumuki-laboratory-5.6.3 app/models/concerns/with_slug.rb
mumuki-laboratory-5.6.2 app/models/concerns/with_slug.rb
mumuki-laboratory-5.6.1 app/models/concerns/with_slug.rb
mumuki-laboratory-5.6.0 app/models/concerns/with_slug.rb
mumuki-laboratory-5.5.0 app/models/concerns/with_slug.rb