После обновления до 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):
Почему для проверки необходим резерв?Очевидно, что Резервировать НЕ обязательно.