73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/support/attributes.rb', line 73
def attr_fields(*args)
args.flatten.each do |field|
field, default = (field.is_a?(Hash) ? field.to_a.flatten : [field]).map(&:to_s)
method_id = field.downcase.gsub(/[-\s]+/, '_')
define_method method_id do; self[field] ||= default; end unless self.respond_to?(method_id)
writer_id = [method_id, '='].join
define_method writer_id do |value|
self[field] = value
end unless self.respond_to?(writer_id)
predicate = [method_id, '?'].join
unless self.respond_to?(predicate)
define_method predicate do
![nil, false, '', [], 'false', 'no', 'never'].include?(self[field])
end
has_predicate = ['has_', predicate].join
alias_method(has_predicate, predicate) unless self.respond_to?(has_predicate)
end
end
end
|