From 52cdcb876c5f719c543e8d6efdcdc9dde759218a Mon Sep 17 00:00:00 2001 From: hukl Date: Mon, 2 Feb 2009 22:29:35 +0100 Subject: comments on top of the class to keep the class itself clean --- app/models/page.rb | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/app/models/page.rb b/app/models/page.rb index fee20a8..e1bddb2 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -1,28 +1,32 @@ +# Alternativ queries for the named_scope with one or two inner joins. +# Loading the Flags themselves would be another query. +# Could be faster on larger data sets. +# +# Single Join: +# +# Page.find( +# :all, +# :joins => 'JOIN flags_pages on pages.id = flags_pages.page_id', +# :include => :flags, +# :conditions => ['flags_pages.flag_id IN (?)', [1,2]] +# ) +# Two inner joins: +# +# Page.find( +# :all, +# :joins => :flags_pages, +# :conditions => ['flags_pages.flag_id IN (?)', [1,2]] +# ) +# +# Page.find_by_sql("select p.* from pages p JOIN flags_pages f on p.id = f.page_id where (f.flag_id IN (1,2))") + class Page < ActiveRecord::Base belongs_to :node has_and_belongs_to_many :flags acts_as_list :column => :revision, :scope => :node_id - - # Alternativ Queries with one or two inner joins. Loading the Flags themselves - # would be another query. Could be faster on larger data sets. - # - # Single Join: - # - # Page.find( - # :all, - # :joins => 'JOIN flags_pages on pages.id = flags_pages.page_id', - # :include => :flags, - # :conditions => ['flags_pages.flag_id IN (?)', [1,2]] - # ) - # Two inner joins: - # - # Page.find( - # :all, - # :joins => :flags_pages, - # :conditions => ['flags_pages.flag_id IN (?)', [1,2]] - # ) + named_scope :with_flags, lambda {|flag_names| if (flags = Flag.find_all_by_name(flag_names)).empty? {} -- cgit v1.3