Мисля, че това, което всъщност търсите, е следното:
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 трябва да използвате proc вместо низ, за да използвате полета като #{id}
.
Вижте проблема тук:https://github.com/rails/rails/issues/3920