Questo SQL restituisce i post che contengono entrambi i tag.
select
p.*
from
posts p
,asset_tags atg1
,asset_tags atg2
,tags t1
,tags t2
where
p.id = atg1.post_id
and t1.id = atg1.tag_id
and t1.tag = 'MySQL'
and p.id = atg2.post_id
and t2.id = atg2.tag_id
and t2.tag = 'Rails'
;
Per quanto riguarda l'operazione tramite il record attivo, un'alternativa sarebbe quella di eseguire una query per ciascuno dei tag e quindi e gli array risultanti per ottenere l'intersezione dei due.