Невозможно вставить объект в модель с ассоциациями - PullRequest
0 голосов
/ 24 октября 2018

После обновления до Rails 5.2 с Rails 4 у ​​меня возникли некоторые проблемы с ассоциациями моделей.

У меня есть модельное событие, в котором пользователи являются участниками события, и каждое событие имеет один резерв для пользователей.которые хотят посетить позже.

# app/models/event.rb
class Event < ApplicationRecord

  # Events has many Users through subcsriptions
  has_many :subscriptions
  has_one :reserve
  has_many :users, :through => :subscriptions

  ...

end

Резервная модель:

# app/models/reserve.rb
class Reserve < ApplicationRecord
  belongs_to :event, optional: true
  has_many :subscriptions
  has_many :users, :through => :subscriptions
end

Модель подписки:

class Subscription < ApplicationRecord
  belongs_to :event
  belongs_to :reserve
  belongs_to :user
end

Когда я пытаюсь подтолкнуть пользователя к резервированию ИЛИсобытие:

@event.users << current_user

Я получил эту ошибку:

ActiveRecord::RecordInvalid (Validation failed: Reserve must exist):

Почему для проверки необходим резерв?Очевидно, что Резервировать НЕ обязательно.

1 Ответ

0 голосов
/ 25 октября 2018

ActiveRecord :: RecordInvalid (проверка не пройдена: резерв должен существовать)

Вы можете использовать optional: true в belongs_to, как показано ниже, чтобы избежать ошибки.

class Subscription < ApplicationRecord
  belongs_to :event
  belongs_to :reserve, optional: true
  belongs_to :user
end
...