rendered paste body 1 class Tag < ActiveRecord::Base
2 has_and_belongs_to_many :products
3 validates_presence_of :name
4 validates_uniqueness_of :name, :scope => :client_id
5
6 def self.find_alpha(client)
7 find(:all, :conditions => ['client_id = ?', client.id ], :order => 'name ASC')
8 end
9
10 def self.find_related_tags(tag_id_list)
11 tag_id_list_string = tag_id_list.join(",")
12 sql = "SELECT DISTINCT t.* FROM products_tags pt, tags t WHERE pt.product_id IN "
13 sql << " ( SELECT products.id "
14 sql << " FROM products "
15 sql << " JOIN products_tags on products.id = products_tags.product_id "
16 sql << " WHERE products_tags.tag_id IN (#{tag_id_list_string}) "
17 sql << " GROUP BY products.id HAVING COUNT(*)=#{tag_id_list.length} ) "
18 sql << "AND t.id = pt.tag_id "
19 sql << "AND t.id NOT IN (#{tag_id_list_string})"
20 return find_by_sql(sql)
21 end
22
23 # Returns the number of products tagged with this item
24 def self.product_count
25 self.products.size
26 end
27 end
>> Tag.methods.include? 'find_alpha'
=> false
>> Tag.methods.include? 'find_related_tags'
=> false
>> Tag.methods.include? 'product_count'
=> false