Dostępny jest interesujący klejnot o nazwie Tenacity, który wydaje się robić to, co chcesz, używając t_has_one, t_has_many i t_belongs_to zamiast normalnych skojarzeń.
Ponieważ obecnie ma tylko te relacje, jest nieco ograniczony, a ja obecnie zmagam się z wieloma do wielu, ale to może ci pomóc.
Sprawdź to tutaj – https://github.com/jwood/tenacity