Sha256: 77f2d3fe1a1d2217e3abc713fa9aeb6fb9ef9148edad30eba5f4c2ec6dc78e7e
Contents?: true
Size: 1.28 KB
Versions: 39
Compression:
Stored size: 1.28 KB
Contents
class Page < ActiveRecord::Base include Content include Nestable include Localized if Fullstack::Cms.config.localize include Uid validates_presence_of :name field :name field :uid field :scope field :path field :resource_type timestamps def home? path == "/" end def resourceful? resource_type.present? end def to_label name end def resource_class if self.resourceful? @resource_class ||= resource_type.to_s.camelize.constantize end end # eg. # # params => { :q => "abc", :a => 5, :slug => "first_post"} # # page.path => "/blog/:slug" # post = page.fetch(params) # == Post.where(:slug => "first_post").first def fetch_resource(params = {}) if self.resourceful? meaningful_params = params.stringify_keys.select {|k, v| path_params.include?(k) } resource_class.where(meaningful_params).first end end def path_params self.path.scan(/:([A-z_][A-z0-9_]*)/).flatten end def resource_params(object) params = {} path_params.each { |param| params[param.to_sym] = object.send(param) } params end def to_label "#{name} - #{locale}" end has_many :page_parts accepts_nested_attributes_for :page_parts, :allow_destroy => true end
Version data entries
39 entries across 39 versions & 1 rubygems