4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/yaml_enumeration/association.rb', line 4
def belongs_to_enumeration(enumeration, options={})
class_name = options[:class_name] ? options[:class_name] : enumeration
define_method(enumeration) do
local_instance = self.instance_variable_get("@#{enumeration}")
local_id = send("#{enumeration}_id")
if local_instance && local_instance.id == local_id
local_instance
else
self.instance_variable_set("@#{enumeration}", local_id && class_name.to_s.classify.constantize.find_by_id(local_id))
end
end
define_method("#{enumeration}=") do |instance|
send("#{enumeration}_id=", instance.try(:id))
end
end
|