В моем приложении модель Vehicle
может иметь несколько моделей Driver
, а модель Base
также может иметь несколько моделей Driver
. Сейчас ассоциации настроены так:
vehicle.rb
class Vehicle < ApplicationRecord
has_many :drivers
base.rb
:
class Base < ApplicationRecord
has_many :drivers
driver.rb
:
class Driver < ApplicationRecord
belongs_to :vehicle
belongs_to :base
Когда пользователь использует приложение, он не может получить доступ к водителям, если они уже не добавили транспортное средство, т. Е. Транспортное средство имеет уникальный набор водителей, которые доступны для этого транспортного средства и только для этого транспортного средства, поскольку водитель не может вести больше чем один автомобиль одновременно.
Где я спотыкаюсь, реализует Base
ассоциацию моделей. База может присоединиться к нескольким водителям в любой момент времени, но водитель может присоединиться только к одной базе за раз.
Что бы я предпочел, чтобы мое приложение могло делать:
При добавлении нового Driver
я бы хотел, чтобы пользователь мог также добавить базовую информацию о драйвере. В связи с тем, как работают базы, база может существовать в таблице баз еще до добавления драйвера. Если база существует, драйвер просто добавляется в таблицу драйверов со ссылкой на ранее существовавшую базу в таблице баз. Если база еще не существует, т. Е. Это первый раз, когда эта конкретная база связана с каким-либо драйвером, добавьте базу в таблицу баз и добавьте драйвер в таблицу драйверов со ссылкой на правильную базу в таблица оснований.
В drivers_controller.rb
я передаю новый Base
экземпляр:
def new
@vehicle = Vehicle.find(vehicle_id)
@base = Base.new
@driver = Driver.new
end
def create
render plain: params[:base].inspect
# other misc code
end
После проверки параметра :base
я вижу, что возвращается nil
, что имеет смысл, поскольку я ничего не делаю с переменной экземпляра @base
в представлении new.html.erb
для DriverController
. У меня уже есть частичная форма для BaseController
и DriverController
. Есть ли способ для меня отрисовать обе частичные формы и отправить одну форму для нескольких моделей? Это плохая идея? Как я могу достичь своего конечного результата?
Для справки, мой new.html.erb
для DriverController
:
# add a @base reference in the following line?
<%= form_with model: @driver, url: vehicle_drivers_path(@vehicle), local: true do |form| %>
# render the base partial here?
<%= render 'form', form: form %>
<% end %>