You could use an association extension
class Project < ActiveRecord::Base
has_many :backers,
-> { select('COMPLEX SQL QUERY') },
through: :pledges,
source: :backer do
def count
#query here
end
end
end
The association proxy is available as proxy_association
, in particular proxy_association.owner
returns the project object.
This overwrites the count method provided by default, so some_project.backers.count
will call your custom query