Рельсовое объединение HABTM
Мне нужна помощь в создании ассоциации для моего нового приложения рельсов.
У меня две модели User
а также Profession
, У пользователя может быть много профессий, а профессия может принадлежать многим пользователям.
я могу сделать HABTM
ассоциация в обеих моделях.
пользователь has_and_belongs_to_many :professions
профессия has_and_belongs_to_many :users
Я хочу, чтобы таблица профессий содержала только уникальные названия профессий и присваивала их многим пользователям. Но если я попытаюсь создать профессии для пользователей, как ниже
user1.professions.create(name: "Dev")
user2.professions.create(name: "Dev")
Обе профессии "Dev" будут сохранены в таблице профессий.
Как сохранить уникальное имя профессии в модели профессий и назначить их многим пользователям?
2 ответа
Я бы предложил разделить его на два этапа.
Сначала найдите или создайте профессию:
profession = Profession.find_or_create_by(name: "Dev")
Затем назначьте профессию пользователю:
user1.professions << profession
user2.professions << profession
Я также рекомендовал бы установить уникальный индекс на professions
таблицы name
колонка. Это гарантирует уникальность.
Попробуйте создать ассоциацию, как показано ниже:
profession = Profession.find_or_create_by(name: "Dev")
user1.professions << profession
profession = Profession.find_or_create_by(name: "Dev")
user2.professions << profession