Rails Associations - связывание списка элементов с конкретным пользователем для определенного события - PullRequest
0 голосов
/ 24 сентября 2018

Я работаю над сайтом событий, где у пользователей есть элементы в инвентаре, которые могут быть перечислены в их профиле.Для этого я использую:

has_many :items

в моем user.rb.

Пользователь сможет посещать любое количество событий.Для каждого события у них будет уникальный список предметов, т. Е. Предметы, которые нужно принести на событие.Я пытаюсь выяснить ассоциации, чтобы сделать эту работу.

В item_list.rb:

belongs_to :event
belongs_to :user
has_many :items

В item.rb:

belongs_to :user
belongs_to :item_list

В event.rb

has_many :item_lists

Но меня беспокоит то, что каждый список уникален для каждого события и пользователя.Кроме того, будет ли моя миграция для item_list включать массив элементов?

Буду признателен за любые идеи.

1 Ответ

0 голосов
/ 24 сентября 2018

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

Если я не ошибаюсь, вы ищете validates_uniqueness_of с опцией scope.

В вашем item_list.rb добавьте

validates_uniqueness_of :event_id, scope: :user_id

Это обеспечит вам item_list с уникальным event_id и user_id.Другими словами, каждый item_list уникален для каждого event и user.

Когда я сгенерирую миграцию своей базы данных для item_list, мне нужно будет включить столбец массивов, т.е.hold item_ids

Нет, в зависимости от того, как настроены ваши ассоциации, Rails будет ожидать, что у вас будет item_list_id в таблице items.Так что если вы хотите получить items для item_list, вы должны сделать @item_list.items

...