Sha256: f79a640cc8b1374976fe648d6a59dba5e0c8ea8278b0538ef8424ba07f86b460

Contents?: true

Size: 1.06 KB

Versions: 10

Compression:

Stored size: 1.06 KB

Contents

module Enjoy::Connectable
  extend ActiveSupport::Concern

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

      has_many name, as: :connectable, class_name: "Enjoy::Page"
      class_eval <<-EVAL
        def routes_namespace
          :#{routes_namespace}
        end
      EVAL

      if autocreate_page
        attr_accessor :enjoy_connectable_autocreate_page
        _name_attr = Enjoy.config.localize ? "name_translations" : "name"
        class_eval <<-EVAL
          after_create do
            if self.enjoy_connectable_autocreate_page
              _p = #{class_name}.new
              _p.#{_name_attr} = self.#{_name_attr}
              _p.connectable = self
              _p.save
            end
          end
        EVAL
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
enjoy_cms-0.3.7.4 app/models/concerns/enjoy/connectable.rb
enjoy_cms-0.3.7.3 app/models/concerns/enjoy/connectable.rb
enjoy_cms-0.3.7.2 app/models/concerns/enjoy/connectable.rb
enjoy_cms-0.3.7.1 app/models/concerns/enjoy/connectable.rb
enjoy_cms-0.3.7 app/models/concerns/enjoy/connectable.rb
enjoy_cms-0.3.6.2 app/models/concerns/enjoy/connectable.rb
enjoy_cms-0.3.6.1 app/models/concerns/enjoy/connectable.rb
enjoy_cms-0.3.6 app/models/concerns/enjoy/connectable.rb
enjoy_cms-0.3.5 app/models/concerns/enjoy/connectable.rb
enjoy_cms-0.3.4 app/models/concerns/enjoy/connectable.rb