Использование Arel:
topics=Topic.arel_table
Topic.where(topics[:forum_id].not_in(@forum_ids))
или, если предпочтительнее:
topics=Topic.arel_table
Topic.where(topics[:forum_id].in(@forum_ids).not)
и начиная с рельсов 4:
topics=Topic.arel_table
Topic.where.not(topics[:forum_id].in(@forum_ids))
Обратите внимание, что в конечном итоге вы не хотите, чтобы forum_ids был списком идентификаторов, а, скорее, подзапросом, если это так, то вам нужно сделать что-то подобное, прежде чем получать темы:
@forum_ids = Forum.where(/*whatever conditions are desirable*/).select(:id)
таким образом вы получаете все в одном запросе: что-то вроде:
select * from topic
where forum_id in (select id
from forum
where /*whatever conditions are desirable*/)
Также обратите внимание, что в конечном итоге вы не хотите делать это, а хотите объединить - что может быть более эффективным.