module ReadOnly::ReadOnlyConcern

Public Class Methods

read_only(attr_name) click to toggle source
# File lib/read_only.rb, line 25
def self.read_only attr_name

  # validates "_#{attr_name}", presence: true

  define_method "_#{attr_name}" do
    instance_variable_get("@_#{attr_name}")
  end

  define_method "_#{attr_name}=" do |val|
    instance_variable_set("@_#{attr_name}", val)

    var = Rails.application.message_verifier(attr_name).verify(val)

    if self.class.column_names.include? "#{attr_name}"
      # active_record attributes
      write_attribute("#{attr_name}", var)
    end

    # attr_accessor attributes
    instance_variable_set("@#{attr_name}", var)
  end

end