Has_many через в Rails при назначении разных ролей

Я пытаюсь создать отношения между адресами и поездками, и я не уверен, как именно установить отношения.

Каждая поездка будет иметь два адреса: начальный адрес и конечный адрес. Адреса могут использоваться во многих различных поездках, и они могут быть либо начальным, либо конечным адресом, в зависимости от поездки. Я предполагаю, что когда пользователи создают новую поездку, они могут выбрать из выпадающего списка все свои адреса, чтобы они могли совершить поездку со своего адреса, называемого, скажем, «home», на свой адрес, называемый, скажем, «airport». "

Уже есть полиморфная связь, установленная между адресами (как локализуемые) с некоторыми другими моделями в приложении, но в этом случае один и тот же адрес должен принадлежать двум разным моделям (пользователю и поездке). Будет ли полиморфная таблица соединений хорошим решением? Даже если это решило проблему, как только вы подключили два разных адреса к поездкам, как лучше отличить начальный адрес от конечного?

Спасибо за любые предложения!

Редактировать: я реализовал все ниже, как hakunin, но я все еще не могу найти способ сделать функцию функции. Я решил использоватьfields_for построитьTripLocation объекты для каждогоTrip, но я не могу понять, что положить в контроллер. Когда я положил:

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

Я получаю ошибкуundefined method build for nil:NilClass, Я думал об использовании просто@trip.trip_location.build вместо этого, но тогда я получаю ошибкуundefined method trip_locations for #<Trip:0x007f5a847f94b0> потому что в модели для поездки не сказаноhas_many :trip_locations, Просто используя обычныйhas_many :trip_locations Я смог ввести всю необходимую информацию в таблицу соединений, просто используя форму помощникаfields_for :trip_locations и сказать, что поездкаhas_many :trip_locations, но тогда у меня нет метода для запроса и определения, какой адрес имеет логическое значение в таблице соединений, установленное как true, а какой - как false. Думаю, если бы я мог решить эту проблему, у меня все было бы готово.

Ответы на вопрос(1)

Ваш ответ на вопрос