Скажите, что у меня есть теги taggable has_many, как мне найти все теги taggable по полю связанных тегов taggable_id?
Taggable.find(:all, :joins => :tags, :conditions => {:tags => {:taggable_id => [1,2,3]}})
результатов в этом:
SELECT `taggables`.* FROM `taggables` INNER JOIN `tags` ON tags.taggable_id = taggables.id WHERE (`tag`.`taggable_id` IN (1,2,3))
Синтаксис невероятен, но не соответствует моим потребностям в том, что полученный sql возвращает любой taggable, который имеет какие-либо, некоторые или все теги.
Как мне найти теги с соответствующими тегами поля taggable_id со значениями 1, 2 и 3?
Спасибо за любой совет. :)
UPDATE:
Я нашел решение, которое я опубликую для других, если они окажутся здесь. Кроме того, хотя за внимание других, чьи предложения по улучшению я бы с радостью получил. :)
Taggable.find(:all, :joins => :tags, :select => "taggables.*, tags.count tag_count", :conditions => {:tags => {:taggable_id => array_of_tag_ids}}, :group => "taggables.id having tag_count = #{array_of_tag_ids.count}"))