class ActiveModelValidators::ImmutabilityValidator

Attributes immutability validator

Public Instance Methods

validate_each(record, attribute, value) click to toggle source

Adds error if there an attempt to change an immutable attribute

  • record - ActiveRecord model

  • attr - model attribute which is supposed to be immutable

  • value - value

Example

class Model < ActiveRecord::Base
  validates :my_atribute, :'active_model_validators/immutability' => true
end

my_model_instance = MyModel.create(my_attribute: 'foo')
my_model_instance.my_attribute = 'bar'
my_model_instance.valid? # => false
# File lib/active_model_validators/immutability_validator.rb, line 20
def validate_each(record, attribute, value)
  return if record.new_record?

  if record.public_send("#{attribute}_changed?")
    record.errors.add(attribute, :immutability)
  end
end