Rails, как создать новую запись, которая имеет полиморфную ассоциацию? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть Location модель, которая полиморфна по :locatable

. Event имеет Location:

class Event < ApplicationRecord
  has_one :location, as: :locatable
end

В events_controller#create, как можноСоздать новое событие с указанием местоположения через параметры?

def create
  property = Event.create! params.require(:event).permit(:name, :time, :location, :organizer_id, attachments: [])
  # ... other stuff, and finally render JSON response
  end

Однако, Event.location равен nil.Как я могу создать место для мероприятия?

Спасибо

1 Ответ

0 голосов
/ 04 февраля 2019
Таблица

locations содержит внешний ключ с именем locatable_id, который устанавливает полиморфную связь с таблицей events.

Для создания location, принадлежащего event:

events_controller.rb

def create
  event = Event.new(event_params)
  location = event.location.build() #or event.location.build(location_parms)
  location.save #will create record in events as well as location associated with the event
end

private
  def event_params
     #Whitelist only events attributes
     params.require(:event).permit(:name, :time, :organizer_id, attachments: [])
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...