Module: ActiveRecord::Acts::Keywordable::SingletonMethods

Defined in:
lib/acts_as_keywordable.rb

Instance Method Summary collapse

Instance Method Details

#find_tagged_with(list) ⇒ Object

[View source]

29
30
31
32
33
34
35
36
37
38
# File 'lib/acts_as_keywordable.rb', line 29

def find_tagged_with(list)
  sql_str = %Q(
    SELECT #{table_name}.* FROM #{table_name}, keywords, keywordings
    WHERE #{table_name}.#{primary_key} = taggings.keywordable_id
    AND keywordings.keywordable_type = ?
    AND keywordings.keyword_id = keywords.id AND keywords.name IN (?)

  )
  find_by_sql([sql_str, acts_as_taggable_options[:keywordable_type], list])
end

#tags_count(options) ⇒ Object

[View source]

40
41
42
43
44
45
46
47
48
49
# File 'lib/acts_as_keywordable.rb', line 40

def tags_count(options)
  sql = "SELECT  keywords.id AS id, keywords.name AS name, COUNT(*) AS count FROM keywords, keywordings, #{table_name} "
  sql << "WHERE keywordings.keywordable_id = #{table_name}.#{primary_key} AND keywordings.keyword_id = keywords.id "
  sql << "AND #{sanitize_sql(options[:conditions])} " if options[:conditions]
  sql << "GROUP BY keywords.name "
  sql << "HAVING count #{options[:count]} " if options[:count]
  sql << "ORDER BY #{options[:order]} " if options[:order]
  sql << "LIMIT #{options[:limit]} " if options[:limit]
  find_by_sql(sql)
end