Sha256: cde04b10d376d036dd33da327c84ac012a9fb8cb2a041d762bf23e01dc58051a

Contents?: true

Size: 823 Bytes

Versions: 9

Compression:

Stored size: 823 Bytes

Contents

module MasterModel
  def self.included(base)
    #base.extend ClassMethods
    base.send :include, InstanceMethods
    base.class_eval do
      acts_as_list
      validates_uniqueness_of :name, case_sensitive: false
      validates_presence_of :name, :display_name
      before_validation :set_display_name, on: :create
      stirp_attributes only: :name
    end
  end

  module InstanceMethods
    def set_display_name
      self.display_name = self.name if self.display_name.blank?
    end

    def check_creatable
      if creatable?
        raise NotModifiableError
      end
    end

    def check_deletable
      if deletable?
        raise NotModifiableError
      end
    end

    def creatable?
      false
    end

    def deletable?
      false
    end
  end

  class NotModifiableError < StandardError; end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
enju_subject-0.2.3 lib/enju_subject/master_model.rb
enju_subject-0.2.2 lib/enju_subject/master_model.rb
enju_subject-0.2.1 lib/enju_subject/master_model.rb
enju_subject-0.2.0 lib/enju_subject/master_model.rb
enju_subject-0.2.0.beta.5 lib/enju_subject/master_model.rb
enju_subject-0.2.0.beta.4 lib/enju_subject/master_model.rb
enju_subject-0.2.0.beta.3 lib/enju_subject/master_model.rb
enju_subject-0.2.0.beta.2 lib/enju_subject/master_model.rb
enju_subject-0.2.0.beta.1 lib/enju_subject/master_model.rb