All pastes #168224 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-09-12 20:32 UTC
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