Sha256: 446e79e33462729f07135619ef91697003ff0a3eab44b193b619bdd64ae63715
Contents?: true
Size: 1.06 KB
Versions: 3
Compression:
Stored size: 1.06 KB
Contents
module Seiten class PageCollection attr_accessor :navigation_id, :pages def initialize(options = {}) @navigation_id = options[:navigation_id] @pages = options[:pages] || [] end def navigation Seiten::Navigation.find_by(id: navigation_id) end def build(options = {}) Seiten::PageCollectionBuilder.call(self, options) end def all pages.to_a end def find(id) find_by(id: id) end def find_by(params) @find_by ||= {} return @find_by[params] if @find_by.key?(params) @find_by[params] = pages.find do |page| params.all? do |k, v| page.send(k) == v end end end def where(params) @where ||= {} return @where[params] if @where.key?(params) @where[params] = pages.select do |page| params.all? do |k, v| page.send(k) == v end end end def new(params = {}) page = Seiten::Page.new(params.merge(navigation_id: navigation_id)) pages << page page end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
seiten-1.0.2 | lib/seiten/page_collection.rb |
seiten-1.0.1 | lib/seiten/page_collection.rb |
seiten-1.0.0 | lib/seiten/page_collection.rb |