Skip to content
This repository has been archived by the owner on Jan 2, 2018. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
…able_on_steroids@315 20afb1e0-9c0e-0410-9884-91ed27886737
  • Loading branch information
jonathan committed Sep 22, 2007
1 parent 1ee8286 commit b3d7ef6
Showing 1 changed file with 6 additions and 8 deletions.
14 changes: 6 additions & 8 deletions lib/acts_as_taggable.rb
Expand Up @@ -93,8 +93,8 @@ def find_options_for_tag_counts(options = {})
options.assert_valid_keys :start_at, :end_at, :conditions, :at_least, :at_most, :order, :limit

scope = scope(:find)
start_at = sanitize_sql(["#{Tagging.table_name}.created_at >= ?", options[:start_at]]) if options[:start_at]
end_at = sanitize_sql(["#{Tagging.table_name}.created_at <= ?", options[:end_at]]) if options[:end_at]
start_at = sanitize_sql(["#{Tagging.table_name}.created_at >= ?", options.delete(:start_at)]) if options[:start_at]
end_at = sanitize_sql(["#{Tagging.table_name}.created_at <= ?", options.delete(:end_at)]) if options[:end_at]

conditions = [
"#{Tagging.table_name}.taggable_type = #{quote_value(base_class.name)}",
Expand All @@ -108,19 +108,17 @@ def find_options_for_tag_counts(options = {})
joins << "LEFT OUTER JOIN #{table_name} ON #{table_name}.#{primary_key} = #{Tagging.table_name}.taggable_id"
joins << scope[:joins] if scope && scope[:joins]

at_least = sanitize_sql(['COUNT(*) >= ?', options[:at_least]]) if options[:at_least]
at_most = sanitize_sql(['COUNT(*) <= ?', options[:at_most]]) if options[:at_most]
at_least = sanitize_sql(['COUNT(*) >= ?', options.delete(:at_least)]) if options[:at_least]
at_most = sanitize_sql(['COUNT(*) <= ?', options.delete(:at_most)]) if options[:at_most]
having = [at_least, at_most].compact.join(' AND ')
group_by = "#{Tag.table_name}.id, #{Tag.table_name}.name HAVING COUNT(*) > 0"
group_by << " AND #{having}" unless having.blank?

{ :select => "#{Tag.table_name}.id, #{Tag.table_name}.name, COUNT(*) AS count",
:joins => joins.join(" "),
:conditions => conditions,
:group => group_by,
:order => options[:order],
:limit => options[:limit]
}
:group => group_by
}.update(options)
end

def caching_tag_list?
Expand Down

0 comments on commit b3d7ef6

Please sign in to comment.