a regular has_one is really a has_many.with_has_one_scope.take, i.e. it considers all records referencing the owner, applies an optional scope, and takes one
so why can't has_one through: :collection work analogously, has_many.apply_scope.take
has_one through: :collection
We're sorry but this tracker is only for issues/bugs. For feature request please post on the rubyonrails-core mailing list.
By the way, unless I'm missing something, this used to work in previous versions of Rails but this has been removed (c.f. this lighthouse ticket).