これは完全にユースケースに依存します。あなたのアプリケーションのユーザーが1つの役割しか果たしていないことを予見できれば、Sergiiが提案するようにenumを使用してください。これは、最も単純で最も効果的なオプションになるでしょう。
また、実際に認可の役割システムが必要かどうか、またはユーザーが自分の好みに合わせて自分自身のタイトルを付けることができないかどうかだけでも判断できます。
ユーザーが複数の役割を果たすことができる柔軟なシステムが必要な場合は、データベーステーブルを使用したい場合や、太字の場合はネイティブ配列タイプを使用することもできます。
もう1つの質問は、どのように役割が作成されるかです。開発者の関心事です。 GUIからロール定義を作成できる必要がありますか?
この例では、ロール定義のテーブルと、ユーザーに割り当てられたロールを含む結合テーブルを使用した一般的なセットアップを示します。
class User < ActiveRecord::Base
has_many :user_roles
has_many :roles, through: :user_roles
def has_role?(name, resource = nil)
scope = user_roles.joins(:role).where(
role: { name: name }
)
scope = scope.where(resource: resource) if resource
scope.any?
end
end
# join table with roles assigned to users
class UserRole < ActiveRecord::Base
belongs_to :user
belongs_to :role
belongs_to :resource, polymorphic: :true
end
# Role definitions
class Role < ActiveRecord::Base
has_many :user_roles
has_many :users, through: :roles
end
出典
2016-05-27 06:15:19
max
Staff#titleをお持ちの場合、なぜ定数が必要ですか? –
youre右それは非常に混乱しています。私が言っていることは、スタッフがタイトルを持っていなければならず、それを正しくコーディングする方法を知りたいということです。スタッフモデル自体にtitle属性を追加するか、title属性を持つroleという名前の関係を作成する必要があります – user3620046