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
|
# File 'lib/metabolical.rb', line 12
def metabolize!
if self.respond_to?(:named_scope)
include Metabolical::AR3Scopes
else
include Metabolical::AR4Scopes
end
class_eval do
has_many :metas, :as => :metabolized, :class_name => 'Metabolical::MetaDatum' do
def [](key)
owner = (self.respond_to?(:proxy_association) ? self.proxy_association.owner : self.proxy_owner)
(owner.metas.loaded? && owner.metas.detect { |m| m.key == key }) || find_by(key: key) || owner.metas.load.build(:key => key)
end
def []=(key, data)
owner = (self.respond_to?(:proxy_association) ? self.proxy_association.owner : self.proxy_owner)
meta = self[key]
meta.data = data
meta.save unless owner.new_record?
meta
end
end
end
end
|