Module: Mcmire::ArAttrLazy::BaseExt::MacroMethods

Defined in:
lib/mcmire/ar_attr_lazy/base_ext.rb

Instance Method Summary collapse

Instance Method Details

#attr_lazy(*args) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/mcmire/ar_attr_lazy/base_ext.rb', line 46

def attr_lazy(*args)
  include InstanceMethods
  extend ClassMethods
  class_inheritable_accessor :attr_lazy_columns
  write_inheritable_attribute :attr_lazy_columns, []
  (class << self; self; end).class_eval do
    alias_method_chain :find, :attr_lazy
  end
  
  args = [args].flatten.map(&:to_s)
  new_cols = args - (attr_lazy_columns & args)
  write_inheritable_attribute(:attr_lazy_columns, attr_lazy_columns | args)
  new_cols.each do |col|
    class_eval("def #{col}; read_lazy_attribute :#{col}; end", __FILE__, __LINE__)
  end
end