Лучший способ моделировать пользователей, у которых есть роли с разными атрибутами в Rails? - PullRequest
2 голосов
/ 29 мая 2011

Я - нуб-рельс, и надеюсь, что кто-нибудь поможет мне разобраться с этой проблемой.У меня есть приложение, которое имеет модель одного пользователя, используя Authlogic для аутентификации и CanCan для авторизации.Есть три роли: Потребитель, Бизнес и Администратор.Пользователь может иметь любое количество этих ролей.

Однако у предприятий есть дополнительные атрибуты, и мне нужно смоделировать их так, чтобы я мог добавлять роли, каждая из которых имеет потенциально разные атрибуты.Instinct говорит мне, что мне нужно иметь отдельную модель для представления атрибутов каждой роли, то есть BusinessRoleProfile, ConsumerRoleProfile и т. Д., А затем, возможно, программно смешать модуль, который добавляет соответствующую ссылку (и) has_one к модели (ам) профиля.

Это лучший способ обрабатывать отдельные атрибуты?Если да, может ли кто-нибудь подсказать мне, как динамически включать эти миксины в зависимости от роли пользователя?

1 Ответ

1 голос
/ 29 мая 2011

РЕДАКТИРОВАТЬ:

Сделал еще несколько исследований, это может вам помочь.https://github.com/thefrontiergroup/scoped_attr_accessible

Похоже, вы можете делать что-то вроде:

class User < ActiveRecord::Base

  # All attributes are accessible for the admin scope.
  attr_accessible :all, :scope => :admin

  # The default scope can only access a and b.
  attr_accessible :a, :b

  # Make both :c and :d accessible for owners and the default scope
  attr_accessible :c, :d, :scope => [:owner, :default]

  # Also, it works the same with attr_protected!
  attr_protected :n, :scope => :default

end

СТАРЫЙ ОТВЕТ

Похоже, это может быть представлено в CanCan 2.0.

https://github.com/ryanb/cancan/issues/326

...