Sha256: 34bbcc3accfac872cefeef73890d7b9954faefcc9c91a22e0d63d6d9055e198d
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
class Page < ActiveRecord::Base include Content include Nestable if Fullstack::Cms.config.localize_pages include Localized index [:uid, :locale] end validates_presence_of :uid, :name field :name field :uid field :scope index :uid, :unique => true 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fullstack-cms-0.2.4 | app/models/page.rb |