Ma_many w Railsach, przypisując różne role

Próbuję stworzyć relację między adresami a wycieczkami i nie jestem pewien, jak dokładnie nawiązać relację.

Każda podróż będzie miała dwa adresy: adres początkowy i adres końcowy. Adresy mogą być używane w wielu różnych podróżach i mogą to być adres początkowy lub adres końcowy w zależności od podróży. Wyobrażam sobie, że gdy użytkownicy tworzą nową podróż, mogą wybrać z listy rozwijanej wszystkich swoich adresów, aby mogli odbyć podróż z adresu zwanego „domem” na adres, na przykład „lotnisko”. „

Istnieje już powiązanie polimorficzne między adresami (jako lokalizowalne) z niektórymi innymi modelami w aplikacji, ale w tym przypadku ten sam adres musi należeć do dwóch różnych modeli (użytkownika i podróży). Czy polimorficzna tabela łączenia będzie dobrym rozwiązaniem? Nawet jeśli to rozwiązałoby problem, po połączeniu dwóch różnych adresów z podróżami, jaki jest najlepszy sposób odróżnienia adresu początkowego od adresu końcowego?

Dziękujemy za wszelkie sugestie!

Edycja: Zaimplementowałem wszystko poniżej przez hakunin, ale wciąż nie mogę znaleźć sposobu, aby funkcja funkcji. Zdecydowałem się użyćfields_for zbudowaćTripLocation obiekty dla każdegoTrip, ale nie wiem, co umieścić w kontrolerze. Kiedy umieściłem:

def new
  @trip = Trip.new
  @trip.origin_trip_location.build
  @trip.destination_trip_location.build
end

Dostaję błądundefined method build for nil:NilClass. Myślałem o użyciu tylko@trip.trip_location.build zamiast tego mam błądundefined method trip_locations for #<Trip:0x007f5a847f94b0> ponieważ w modelu Trip nie mówihas_many :trip_locations. Używając zwykłegohas_many :trip_locations Udało mi się wprowadzić wszystkie niezbędne informacje do tabeli łączenia za pomocą pomocnika formularzafields_for :trip_locations i powiedzenie, że wycieczkahas_many :trip_locations, ale potem nie mam metody na zapytanie i ustalenie, który adres ma wartość boolowską w tabeli łączenia ustawioną jako true, a która ma ustawioną wartość false. Gdybym mógł rozwiązać ten problem, myślę, że byłbym cały ustawiony.

questionAnswers(1)

yourAnswerToTheQuestion