あなたが実際に探しているのはこれだと思います:
has_many :posts, :finder_sql =>
proc {"SELECT p.* from posts p join topics t on p.topic_id = t.id where t.id=#{id}"}
Rails 3.1以降、#{id}
のようなフィールドを使用するには、文字列の代わりにprocを使用する必要があります。 。
こちらの問題をご覧ください: https://github.com/rails/rails/issues/3920