Sha256: be74b920e330f94c207915d9e805047b4f3367b728dbc39e20b394bd36b1e79d

Contents?: true

Size: 701 Bytes

Versions: 1

Compression:

Stored size: 701 Bytes

Contents

module MongoMapper
  module ReadonlyAttributes
    extend ActiveSupport::Concern

    included do
	  class_attribute :_attr_readonly, instance_accessor: false
	  self._attr_readonly = []
	  validate :attr_unchanged, on: :update
		
	  def attr_unchanged
	    self._attr_readonly.each do |attr|
		  unless self[attr] == collection.find_one(:_id => self.id)[attr]
		    errors.add(attr, 'cannot be changed')
		  end
	    end
      end
    end

    module ClassMethods
	  def attr_readonly(*attributes)
	    self._attr_readonly = Set.new(attributes.map { |a| a.to_s }) + (self._attr_readonly || [])
	  end

	  def readonly_attributes
		self._attr_readonly
	  end
	end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongo_mapper-readonly_attributes-0.0.2 lib/mongo_mapper/readonly_attributes.rb