Sha256: aee7dfdaa1c80b0f9cb8293b332670e3b6b90b9e7ec7fe698ddd10b72accb524
Contents?: true
Size: 1.23 KB
Versions: 9
Compression:
Stored size: 1.23 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 has_many :page_parts accepts_nested_attributes_for :page_parts, :allow_destroy => true end
Version data entries
9 entries across 9 versions & 1 rubygems