Module ActiveRecord::Acts::Taggable::SingletonMethods
In: lib/acts_as_taggable_on_steroids_will_paginate.rb

Methods

Public Instance methods

Paginación para el resultado de una llamada a find_tagged_with. Parámetros:

Parámetros

  • tags: los tags a buscar en formato de tag, string, o array de strings o tags
  • options: las opciones para pasar a WillPaginate (:page, :per_page) y a find_tagged_with

[Source]

    # File lib/acts_as_taggable_on_steroids_will_paginate.rb, line 25
25:         def paginate_by_tag(tags, options = {})
26:           page, per_page, total = wp_parse_options(options)
27:           offset = (page.to_i - 1) * per_page
28:           options = options.delete_if {|k, v| [:page, :per_page, :total_entries].include?(k)}
29:           options.merge!(:offset => offset, :limit => per_page.to_i)
30:           items = find_tagged_with(tags, options)
31:           tags_for_count = tags.collect {|t| "\'#{t}\'"}.join(', ')
32:           count = tagging_counts(tags_for_count, options)
33:           returning WillPaginate::Collection.new(page, per_page, count) do |p|
34:             p.replace items
35:           end
36:         end

Devuelve el número de veces que este modelo ha sido taggeado con este Tag

Parámetros

  • comma_separated_tags: tags separados por coma
  • options: las opciones para pasar a count_by_sql. De momento sólo admite conditions

[Source]

    # File lib/acts_as_taggable_on_steroids_will_paginate.rb, line 10
10:         def tagging_counts(comma_separated_tags, options={})
11:           # Hack!
12:           conditions = " "
13:           conditions << "(#{options[:conditions]}) AND " if options[:conditions] 
14:           taggable_table = name.tableize
15:           count_by_sql("select count(distinct taggable_id) 
16:             FROM tags, taggings, #{taggable_table}
17:             WHERE #{conditions} "  + sanitize_sql(["(#{Tag.sanitized_name_columns.collect {|c| "#{c} IN (#{comma_separated_tags})"}.join(' OR ')}) 
18:               AND tags.id = taggings.tag_id AND taggings.taggable_type = :name AND #{taggable_table}.id=taggings.taggable_id", {:name => name}]))
19:         end

[Validate]