Class: Tag
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Tag
- Defined in:
- app/models/tag.rb
Instance Attribute Summary collapse
-
#size ⇒ Object
Returns the value of attribute size.
Class Method Summary collapse
-
.cloud(options = {}) ⇒ Object
Returns an array of tags with a size attribute This takes the same arguments as find, plus the additional ‘:sizes` option, which contols the number of sizes the tag cloud will have.
- .columns_for_index ⇒ Object
-
.counts(options = {}) ⇒ Object
Returns an array of tags with a count attribute.
Instance Method Summary collapse
Instance Attribute Details
#size ⇒ Object
Returns the value of attribute size.
7 8 9 |
# File 'app/models/tag.rb', line 7 def size @size end |
Class Method Details
.cloud(options = {}) ⇒ Object
Returns an array of tags with a size attribute This takes the same arguments as find, plus the additional ‘:sizes` option, which contols the number of sizes the tag cloud will have. The default number of sizes is 5.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/models/tag.rb', line 26 def self.cloud(={}) sizes = (.delete(:sizes) || 5) - 1 sizes = 1 if sizes < 1 = counts() return [] if .blank? min = nil max = nil .each do |t| t.count = t.count.to_i min = t.count if (min.nil? || t.count < min) max = t.count if (max.nil? || t.count > min) end divisor = ((max - min) / sizes) + 1 .each do |t| t.size = ("%1.0f" % (t.count * 1.0 / divisor)).to_i end end |
.columns_for_index ⇒ Object
52 53 54 55 56 |
# File 'app/models/tag.rb', line 52 def self.columns_for_index [ {:label => "Name", :method => :name, :order => "name" }, {:label => "Usages", :method => :tagging_count }, {:label => "Updated On", :method => :updated_on_string, :order => "updated_at"} ] end |
.counts(options = {}) ⇒ Object
Returns an array of tags with a count attribute
12 13 14 15 16 17 18 19 20 |
# File 'app/models/tag.rb', line 12 def self.counts(={}) with_scope(:find => { :select => "tags.id, tags.name, count(*) as count", :joins => :taggings, :group => "tags.id, tags.name", :order => "count desc, tags.name" }) do all() end end |
Instance Method Details
#render ⇒ Object
58 59 60 |
# File 'app/models/tag.rb', line 58 def render @taggings = @content_block.taggings.paginate(:page => params[:page]) end |
#tagging_count ⇒ Object
48 49 50 |
# File 'app/models/tag.rb', line 48 def tagging_count taggings.count end |