class ActiveModel::Validations::UnchangeableValidator

Public Instance Methods

validate_each(record, attribute, _value) click to toggle source
# File lib/validates_unchangeable/active_model.rb, line 8
def validate_each(record, attribute, _value)
  if !record.public_send("#{attribute}_changed?") ||
     (record.public_send("#{attribute}_was") == default_value_for(record, attribute) &&
       !record.public_send(attribute).nil?)
    return
  end

  record.errors.add(attribute, :unchangeable)
end

Private Instance Methods

default_value_for(record, attribute) click to toggle source
# File lib/validates_unchangeable/active_model.rb, line 20
def default_value_for(record, attribute)
  return unless record.class.respond_to?(:column_defaults)

  record.class.column_defaults[attribute.to_s]
end