У меня есть две таблицы: пользователи и группы . Пользователь может принадлежать ко многим группам. Группа может иметь много пользователей.
Итак, я создал have_and_belongs_to_many отношения между пользователями и группами с использованием объединенной таблицы groups_users. Это все работает, как и ожидалось.
Я также хотел бы указать группу ACTIVE для каждого пользователя. Если бы не было отношения habtm, которое я уже определил, я бы создал столбец «group_id» в пользователях для активной группы, а затем я бы определил отношение «один ко многим» между моделями следующим образом:
class User < ActiveRecord::Base
belongs_to :group
end
class Group < ActiveRecord::Base
has_many :users
end
Это не сработало. Мне не удалось получить доступ к свойствам группы, таким как «@ user.group.name». Я подозреваю, что слишком много спрашиваю о Rails, указав два отношения.
Итак, у меня три вопроса.
- Я мог бы очень легко понять, если объединение двух отношений приводит к путанице в Active Record. Это тот случай?
- Если так, как бы вы реализовали эти отношения? Прямо сейчас я просто использую group_id, но это кажется грязным.
- Независимо от того, использую ли я активную активную запись или вручную устанавливаю активную группу, активная группа пользователя может находиться за пределами группы, к которой он принадлежит, с использованием первого отношения habtm. Любые мысли о том, как реализовать это с ограничением, что активная группа должна быть группой, к которой принадлежит пользователь?
Спасибо за любые идеи. Я нахожусь на пару недель в изучении Rails и думаю, что понимание этой маленькой проблемы значительно углубит мое понимание моделей и взаимосвязей таблиц.