Module: ActiveRecordLite::CoreExt

Defined in:
lib/active_record_lite/core_ext.rb

Instance Method Summary collapse

Instance Method Details

#has_lite(options = {}) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/active_record_lite/core_ext.rb', line 3

def has_lite(options={})
    if options.key?(:columns)
        @_arlcolumns = options.delete(:columns)
    end
    class_eval "        def self.to_lite(*args)\n            selects = args.presence || @_arlcolumns\n            scoper = unscope(:select).select(selects)\n            ActiveRecordLite.perform(scoper.to_sql, selects)\n        end\n        \n        class ActiveRecordLite < ActiveRecordLite::Base\n            @base_class = parent\n            @attr_lookup = {}\n            columns.each do |column_name|\n                type = parent.type_for_attribute(column_name).type \n                if type.eql?(:datetime)\n                    define_method(column_name) do\n                        memoize_results(:\"@\\\#{column_name}\") {\n                            read_attribute(column_name).in_time_zone\n                        }\n                    end\n                elsif type.eql?(:boolean)\n                    define_method(column_name) do\n                        read_attribute(column_name) == 1\n                    end\n                    alias_method \"\\\#{column_name}?\", column_name\n                elsif type.eql?(:text) && parent.serialized_attributes.key?(column_name)\n                    klass = parent.serialized_attributes[column_name]\n                    define_method(column_name) do\n                        memoize_results(:\"@\\\#{column_name}\") {\n                            klass.load(read_attribute(column_name))\n                        }\n                    end\n                else\n                    define_method(column_name) do\n                        read_attribute(column_name)\n                    end\n                end\n            end\n        end\n    EOV\nend\n"