Module: AtomicCms::HasComponents::ClassMethods

Defined in:
lib/atomic_cms/has_components.rb

Instance Method Summary collapse

Instance Method Details

#component_attr(name) ⇒ Object



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