Добавить дополнительные данные в таблицу соединений - Rails - PullRequest
14 голосов
/ 24 февраля 2010

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

Новое поле является логическим значением, называемым «обязательным».

Есть простой или приятный способ сделать это?

Ответы [ 2 ]

14 голосов
/ 24 февраля 2010

Переключитесь на использование :has_many => :through ассоциации, которая специально разработана для случаев, когда вам нужна модель соединения. Более подробная информация содержится в Руководстве по связям ActiveRecord .

12 голосов
/ 24 февраля 2010

Вы хотите объединить модель. Я бы назвал это «CoursesYear», потому что тогда вам не нужно менять имя таблицы, но вы также можете переместить все эти данные в другую модель, если хотите. Ваши модели будут настроены так:

class Courses < ActiveRecord::Base
  has_many :courses_years
  has_many :years, :through => :courses_years
end

class Years < ActiveRecord::Base 
  has_many :courses_years
  has_many :courses, :through => :courses_years
end

class CoursesYears < ActiveRecord::Base
  belongs_to :course
  belongs_to :year
end

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...