module Skr::Concerns::ImmutableModel::ClassMethods
Public Instance Methods
is_immutable(options = {})
click to toggle source
Once it's created it may not be updated or destroyed. @raise [ActiveRecord::ReadOnlyRecord] if destroy, delete or save is called after it's been created.
# File lib/skr/concerns/immutable_model.rb, line 12 def is_immutable(options = {}) options[:except] = [*options[:except]].map{|name| name.to_s } # make sure except is present and an array before_destroy do raise ActiveRecord::ReadOnlyRecord.new( "Can not destroy #{self.class.model_name}, only create is allowed" ) end before_update do unless ( changes.keys - change_tracking_fields - options[:except] ).blank? raise ActiveRecord::ReadOnlyRecord.new( "Can not update, only create #{self.class.model_name}" ) end end end