Я пытаюсь написать приложение, которое позволяет пользователям регистрироваться для событий. Каждое событие имеет своего владельца и пользователей, которые планируют посетить мероприятие. У меня возникли проблемы с выбором правильной ассоциации для последней. Я пробовал has_and_belongs_to_many, но где-то читал, что его не рекомендуется использовать, поэтому я попытался использовать has_many: through и, похоже, не работает. Это то, что я придумал сейчас:Какую Rails-ассоциацию следует использовать?
class User < ApplicationRecord
has_secure_password
has_many :events, :foreign_key => :owner_id
has_many :event_users
has_many :events, :through => :event_users
end
class Event < ApplicationRecord
belongs_to :user, :foreign_key => :owner_id
has_many :event_users
has_many :users, :through => :event_users
end
class EventUser < ApplicationRecord
has_many :users
has_many :events
end
И код подключений выглядит следующим образом:
def sign_up
user = User.find(session[:user_id])
@event.users << user
end
Этот код возвращает ошибку:
Cannot modify association 'Event#users' because the source reflection class 'User' is associated to 'EventUser' via :has_many.
Может вы, ребята, скажите мне что я делаю неправильно и как это делать правильно? Это мое первое серьезное приложение Rails, и я действительно хочу написать его правильно. Заранее спасибо.