0

У меня есть две существующие модели - школы и пользователи.Rails 4 Настройка отношения с HABTM

class School < ActiveRecord::Base 
has_and_belongs_to_many :users 

class User < ActiveRecord::Base 
has_and_belongs_to_many :schools 

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

ответ

0

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

школы

has_many: пользователи

пользователя

belongs_to: школа

Тогда вы также должны иметь user_id: целочисленный столбец в вашей школьной таблице.

Теперь вы можете запросить.

школа = School.first

school.users

Если вы хотите отношения многие ко многим вам нужно создать таблицу schools_users с school_id и user_id поле.

1

Отношение определено для примера школы (конкретной школы), поэтому School.users никогда не будет работать.

Предполагая, что у вас есть правильная настройка таблиц (вам придется вручную создать миграцию для таблицы соединений, см., Например, here), это на самом деле довольно легко.

school = School.first 
user = User.first 

# add user to school 
school.users << user 

# or v.v. 
user.schools << school 
Смежные вопросы