Forum: Ruby on Rails count_as_taggable distinctly

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Lon B. (Guest)
on 2006-02-14 00:29
I needed to count tagged records, I came up with this:

<pre>def count_tagged_with(options = {})
          options = { :separator => ' ' }.merge(options)

          tag_names =
ActiveRecord::Acts::Taggable.split_tag_names(options[:any] ||
options[:all], options[:separator])
          raise "No tags were passed to :any or :all options" if
tag_names.empty?

          o, o_pk, o_fk, t, t_pk, t_fk, jt = set_locals_for_sql
          sql = "SELECT COUNT(DISTINCT #{o}.#{o_pk}) FROM #{jt}, #{o},
#{t} WHERE #{jt}.#{t_fk} = #{t}.#{t_pk}
                AND (#{t}.name = '#{tag_names.join("' OR
#{t}.name='")}')
                AND #{o}.#{o_pk} = #{jt}.#{o_fk}"
          sql << " AND #{sanitize_sql(options[:conditions])}" if
options[:conditions]

          count_by_sql(sql)
end</pre>
This topic is locked and can not be replied to.