Как настроить типичные отношения ролей пользователей HABTM

Я новичок в этом, и я использую cancan + devise для аутентификации пользователя. Однако я не совсем уверен, что значит установить типичные отношения ролей пользователей HABTM, и я действительно не понимаю, что такое отношения HABTM.

Может ли кто-нибудь объяснить это действительно хорошо или указать мне хороший учебник или пример?


person Vasseurth    schedule 14.07.2011    source источник


Ответы (2)


HABTM означает «имеет и принадлежит многим». В основном вам нужна таблица в качестве посредника для отслеживания нескольких идентификаторов (так называемая сквозная таблица). Когда речь идет о типичных отношениях ролей пользователей HABTM, они на самом деле означают, что будет модель User, модель Role, таблица пользователей, таблица ролей и таблица roles_users. Не забудьте добавить таблицу HABTM -- roles_users --. Типичная установка следующая:

class User < ActiveRecord::Base
  has_and_belongs_to_many :roles
end

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users
end

Затем вы можете использовать ассоциации, как обычно говоря User.first.roles и Role.first.users.

Есть также пара Railscasts по вашим проблемам.

person recursive    schedule 14.07.2011
comment
как вы создаете таблицу users_roles? - person Vasseurth; 14.07.2011
comment
Извините, нажмите Enter слишком рано, отредактируйте приведенное выше, указав следующую информацию: суть. Затем запустите rake db:migrate. Это должно сработать. - person recursive; 14.07.2011
comment
@recursive не должно быть rails g migration add_roles_users_table ? Я думал, что Rails ожидает, что две модели будут в алфавитном порядке. - person Arcolye; 28.11.2011

Руководства по Ruby on Rails — хорошая отправная точка здесь также этот учебник именно то, что вы хотите

person John Beynon    schedule 14.07.2011
comment
Я использую второй учебник, но он просто говорит: «Настроить отношения HABTM», но не говорит, как - person Vasseurth; 14.07.2011
comment
mikewilliamson.wordpress.com/2010/07/02/ – простой туториал по habtm - person Bohdan; 14.07.2011
comment
У большинства из них есть миграция UsersHaveAndBelongToManyRoles, как вы ее создаете? - person Vasseurth; 14.07.2011
comment
Документы смехотворно расплывчаты по этому поводу... Тьфу. Спасибо за уроки. - person Ruben Martinez Jr.; 05.06.2014