Как создать отношение «многие к одному» с существующими записями в Rails - PullRequest
1 голос
/ 28 июня 2011

Я пытаюсь реализовать что-то похожее на это ниже.Базовая настройка: Schedule модель

class Schedule < ActiveRecord::Base
  has_many :events
end

Модель Event будет принадлежать Schedule.События состоят из имени, даты и времени, продолжительности и Room

A Room выбирается из списка выбора при создании события, все комнаты создаются заранее через интерфейс заполнения или администратора.Комната будет хранить информацию, такую ​​как количество посадочных мест.

Я пытался найти способ реализации этого, который кажется правильным.Кажется, что решения варьируются между habtm или has_many: through, но я не вижу необходимости в таблице соединений для этой ситуации.Теоретически, Событие has_one :room, но обратная связь не belongs_to :event, так как Комната может использоваться для многих событий, для этого также требуется наличие внешнего ключа на столе комнат.

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

class Event < ActiveRecord::Base
  belongs_to :schedule

  def room
    Room.find(room_id)
  end
end

Все, что я до сих пор делал в Rails, показалось "правильным", но все решения, которые я "мы придумали, что нет, и я чувствую, что что-то упустил;или, может быть, я просто жду этого дополнительного волшебства.Есть ли "Rails" способ сделать это?

1 Ответ

4 голосов
/ 28 июня 2011

Разве в этом случае событие не будет иметь отношение принадлежащего к Room в этом случае?

class Event < ActiveRecord::Base
  belongs_to :schedule
  belongs_to :room
end

Если вы подумаете об этом с точки зрения схемы, ваша таблица "событий" почти наверняка имеет "schedule_id" и "room_id "столбцы.

Другая сторона отношений состоит в том, что Комната имеет_ множество событий.

...