Creo que lo que realmente estás buscando es esto:
has_many :posts, :finder_sql =>
proc {"SELECT p.* from posts p join topics t on p.topic_id = t.id where t.id=#{id}"}
A partir de Rails 3.1, debe usar un proceso en lugar de una cadena para usar campos como #{id}
.
Vea el problema aquí:https://github.com/rails/rails/issues/3920