10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/atomic_cms/has_components.rb', line 10
def component_attr(name)
define_method("set_default_#{name}") do
write_attribute(name, ArrayComponent.new.to_yaml) unless send(name)
end
after_initialize "set_default_#{name}"
define_method("#{name}_object") do
AtomicAssets::Component.from_yaml(send(name))
end
define_method("#{name}_object=") do |params|
object = AtomicAssets::Component.from_hash(params)
write_attribute(name, object.to_yaml)
end
define_method("#{name}_render") do
send("#{name}_object").render
end
define_method("#{name}_edit") do
send("#{name}_object").edit
end
end
|