Есть ли способ иметь трехсторонние ассоциации habtm в rails / activerecord? - PullRequest
0 голосов
/ 10 мая 2010

Часто три (или более) способа объединения необходимы для ассоциаций хабтма. Например модель разрешения с ролями.

У определенной области функциональности есть много пользователей, которые могут получить доступ ко многим областям.

Разрешения для области настраиваются через роли (habtm)

Ассоциация пользователей / ролей также habtm

Разрешения (чтение, запись, удаление и т. Д.) Относятся к ролям.

Как лучше всего это сделать с помощью rails / activerecord?

Ответы [ 2 ]

2 голосов
/ 11 мая 2010

Я не уверен, что вы просто используете в качестве примера полномочия пользователя на основе ролей или это действительно ваша цель.

Вложенные habtm отношения в Rails просты, хотя я бы очень рекомендовал Вложенные has_many :through, просто установите их так, как вы себе представляете:

class Permission < ActiveRecord::Base
end

#this table must have permission_id and role_id 
class PermissionAssignment < ActiveRecord::Base
  belongs_to :permission
  belongs_to :role
end

class Role < ActiveRecord::Base
  has_many :users, :through => :role_assignments
  has_many :permissions, :through => :permission_assignments
end

#this table must have user_id and role_id     
class RoleAssignment < ActiveRecord::Base
  belongs_to :role
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :roles, :through => :role_assignments
end
1 голос
/ 10 мая 2010

Этот вопрос о rails и RBAC (управление аутентификацией на основе ролей) содержит множество полезных примеров, которые дают ответ на этот вопрос, а также примеры реализации вашего примера.

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