module ActiveAccess::AttributeMethods::ClassMethods

Public Instance Methods

attr_private(*attrs) click to toggle source
# File lib/active_access/attribute_methods.rb, line 16
def attr_private(*attrs)
  update_attribute_method_access(:private, attrs)
end
attr_private_writer(*attrs) click to toggle source
# File lib/active_access/attribute_methods.rb, line 20
def attr_private_writer(*attrs)
  update_attribute_method_access(:readonly, attrs)
end
define_attribute_methods(attrs=nil) click to toggle source
Calls superclass method
# File lib/active_access/attribute_methods.rb, line 24
def define_attribute_methods(attrs=nil)
  if defined?(ActiveRecord) && (self < ActiveRecord::AttributeMethods)
    super() # takes no arguments
    reset_attribute_method_access
  else
    super # takes a list of attribute names as arguments
    reset_attribute_method_access(attrs)
  end
end

Private Instance Methods

privatize_attribute_readers(attr) click to toggle source
# File lib/active_access/attribute_methods.rb, line 68
def privatize_attribute_readers(attr)
  AttributeConventions.reader_names(attr).each do |name|
    private name if method_defined?(name)
  end
end
privatize_attribute_writers(attr) click to toggle source
# File lib/active_access/attribute_methods.rb, line 62
def privatize_attribute_writers(attr)
  AttributeConventions.writer_names(attr).each do |name|
    private name if method_defined?(name)
  end
end
reset_attribute_method_access(attrs=nil) click to toggle source
# File lib/active_access/attribute_methods.rb, line 44
def reset_attribute_method_access(attrs=nil)

  if attrs
    attr_syms = attrs.map(&:to_sym)
    attr_accesses = _attribute_access.slice(*attr_syms)
  else
    attr_accesses = _attribute_access
  end

  attr_accesses.each do |attr, access|
    if [:private, :readonly].include?(access)
      privatize_attribute_writers(attr)
    end
    privatize_attribute_readers(attr) if access == :private
  end

end
update_attribute_method_access(level, attrs) click to toggle source
# File lib/active_access/attribute_methods.rb, line 36
def update_attribute_method_access(level, attrs)
  self._attribute_access = self._attribute_access.dup
  attrs.each do |attr|
    self._attribute_access[attr.to_sym] = level
  end
  reset_attribute_method_access(attrs)
end