Module: Enjoy::Pages::Connectable::ClassMethods

Defined in:
app/models/concerns/enjoy/pages/connectable.rb

Instance Method Summary collapse

Instance Method Details

#enjoy_connectable_field(name = :connected_pages, opts = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/models/concerns/enjoy/pages/connectable.rb', line 5

def enjoy_connectable_field (name = :connected_pages, opts = {})
  class_name = opts.delete(:class_name)
  class_name ||= "Enjoy::Pages::Page"
  routes_namespace = opts.delete(:routes_namespace)
  routes_namespace ||= :main_app
  autocreate_page = opts.delete(:autocreate_page)
  autocreate_page = false if autocreate_page.nil?

  has_many name, as: :enjoy_connectable, class_name: class_name
  class_eval "    def routes_namespace\n      :\#{routes_namespace}\n    end\n  EVAL\n\n  if autocreate_page\n    attr_accessor :enjoy_connectable_autocreate_page\n    _name_attr = Enjoy::Pages.config.localize ? \"name_translations\" : \"name\"\n    class_eval <<-EVAL\n      after_create do\n        if [true, 1, \"1\", \"true\", \"t\"].include?(self.enjoy_connectable_autocreate_page)\n          _p = \#{class_name}.new\n          _p.\#{_name_attr} = self.\#{_name_attr}\n          _p.connectable = self\n          _p.save\n        end\n      end\n    EVAL\n  end\nend\n"