44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/acts_as_taggable_on_padrino/taggable/related.rb', line 44
def related_tags_for(context, klass)
tags_to_find = tags_on(context).collect { |t| t.name }
scope = klass.scoped
scope = scope.where("#{klass.table_name}.id != ?", id) if self.class == klass scope.select("#{klass.table_name}.*, COUNT(#{acts_as_taggable_on_tag_model.table_name}.id) AS count").
from("#{klass.table_name}, #{acts_as_taggable_on_tag_model.table_name}, #{acts_as_taggable_on_tagging_model.table_name}").
where("#{klass.table_name}.id = #{acts_as_taggable_on_tagging_model.table_name}.taggable_id").
where("#{acts_as_taggable_on_tagging_model.table_name}.taggable_type = ?", klass.to_s).
where("#{acts_as_taggable_on_tagging_model.table_name}.tag_id = #{acts_as_taggable_on_tag_model.table_name}.id").
where("#{acts_as_taggable_on_tag_model.table_name}.name IN (?)", tags_to_find).
group(grouped_column_names_for(klass)).
order("count DESC")
end
|