Я работаю на рельсах 3,
Я пишу логику в рельсах для выборки тегов, связанных с тегом, на основе типа taggable.
Как написать то же самое в рельсах способом из ниже sql?
select
count(t2.id),
t2.id,
t2.tag_id
from taggings t1
inner join taggings t2 on (t1.taggable_id = t2.taggable_id and t1.taggable_type = t2.taggable_type )
where t1.tag_id = 2
group by(t2.id);
EDIT
Я написал как
tag = ActsAsTaggableOn::Tag.find_by_name(params[:id])
join_clause = 'INNER JOIN taggings as t2 ON(t1.taggable_id = t2.taggable_id and t1.taggable_type = t2.taggable_type)'
select_clause = "DISTINCT t2.tag_id"
from_clause = 'taggings as t1'
where_clause = "t1.tag_id = #{tag.id} and t2.tag_id != #{tag.id}"
group_by_clause = "(t2.id)"
@related_tags = ActsAsTaggableOn::Tagging.select(select_clause).joins(join_clause).where(where_clause).from(from_clause).group(group_by_clause).collect do |t|
ActsAsTaggableOn :: Tag.find (t.tag_id)
конец
Как переписать то же самое более рельсовым способом.