Sha256: ee9555728d21d097347530714987027fadcd44fe09c5d024db1ccf7ec2ffb796

Contents?: true

Size: 1.08 KB

Versions: 8

Compression:

Stored size: 1.08 KB

Contents

require 'active_attr'
class ClassifyConcern
  UPCOMING_CONCERNS = []

  def self.normalize_concern_name(name)
    name.to_s.classify
  end

  include ActiveAttr::Model
  attribute :curation_concern_type

  validates(
    :curation_concern_type,
    presence: true,
    inclusion: { in: lambda { |record| record.registered_curation_concern_types } }
  )

  def all_curation_concern_classes
    registered_curation_concern_types.sort.collect(&:constantize)
  end

  def possible_curation_concern_types
    registered_curation_concern_types.collect{|concern|
      [concern.constantize.human_readable_type, concern]
    }
  end

  def curation_concern_class
    if possible_curation_concern_types.detect{|name, class_name|
        class_name == curation_concern_type
      }
      curation_concern_type.constantize
    else
      raise RuntimeError, "Invalid :curation_concern_type"
    end
  end

  def upcoming_concerns
    UPCOMING_CONCERNS
  end

  require 'morphine'
  include Morphine
  register :registered_curation_concern_types do
    Curate.configuration.registered_curation_concern_types
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
curate-0.6.6 app/models/classify_concern.rb
curate-0.6.5 app/models/classify_concern.rb
curate-0.6.4 app/models/classify_concern.rb
curate-0.6.3 app/models/classify_concern.rb
curate-0.6.1 app/models/classify_concern.rb
curate-0.6.0 app/models/classify_concern.rb
curate-0.5.6 app/models/classify_concern.rb
curate-0.5.5 app/models/classify_concern.rb