対モデルIは、adminロール/ユーザーを作成する方法を知っている:の間で決定する際に考慮すべき二つのオプションに任意の長所や短所がある場合、私も疑問に思って何https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-roleRailsの工夫 - 管理者役割、属性
ですそれら。誰でもこの洞察力を提供できますか?
対モデルIは、adminロール/ユーザーを作成する方法を知っている:の間で決定する際に考慮すべき二つのオプションに任意の長所や短所がある場合、私も疑問に思って何https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-roleRailsの工夫 - 管理者役割、属性
ですそれら。誰でもこの洞察力を提供できますか?
私は水を少し混乱させてください。私はRole
テーブルと結合テーブルUserRole
でこれを好む。このようにして、dbに別のカラム/テーブルを追加することなく、複数のロールを定義することができます。
class User
has_many :user_roles
has_many :roles, :through => :user_roles
def role?(role)
role_names.include? role
end
def role_names
@role_names ||= self.roles.map(&:name)
end
def role=(role)
self.roles << Role.find_or_create_by_name(role)
end
end
class UserRole
# integer: user_id, integer: role_id
belongs_to :user
belongs_to :role
end
class Role
# string: name
has_many :user_roles
has_many :users, :through => :user_roles
end
本当に管理者の役割で何をしたいかによって異なります。最初の選択肢は、管理者の役割はそれ自身が固有のモデルであるため、少し安全だと言います。
2番目のオプションは簡単で、最小限の労力で進化するのに役立ちます。しかし、ユーザーがブール変数とそれを設定する方法を見つけ出すと、どのユーザーも管理者になり、必要のないアクセス領域になる可能性があります。
私はこれが概念的に好きです。なぜなら、それが必要な場合には、多くの柔軟性を追加するからです。これとは逆に、複雑さが増します。 –
理論的には、このアプローチを使用すると互換性のない役割を組み合わせることはできますか? – DreamWalker