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"
|