3

プロジェクトにロールベースの認証(CanCanとDeviseを使用)を追加しようとしたときに、ロールを保存する方法が2つあることがわかりました。1つは「Hasand Belongs_to」の方法で、もう1つは新しいフィールドにロールを保存する方法です。ユーザーテーブル。

したがって、問題は、最初の方法でdeafultユーザーの役割を定義するにはどうすればよいですか、2番目の方法でdeafultの役割を定義するためにどちらの方法を選択する必要がありますか(移行またはDeviseのユーザーコントローラーの編集でデフォルトの役割を設定しますか?)

また、この方法を使用する必要がありますか、それとも代わりにgemを使用する方が良いですか?

PS私はすでにTonyAmoyalのチュートリアルを読みましたが、そこに答えが見つかりませんでした。

4

4 に答える 4

9

質問を正しく理解していれば、Ruby on rails、cancan、およびデフォルトのロール割り当てがうまくいきました。

以下を /models/user.rb に追加するだけで、サインアップ時にデフォルトのロールを割り当てることができます:

after_create :default_role

  private
  def default_role
    self.roles << Role.where(:name => 'User').first
  end
于 2012-10-17T02:50:28.470 に答える
2

この状況は、Rails AntiPatterns の本で説明されています: http://railsantipatterns.com/

簡単な答えは次のusersとおりです。テーブルのフィールドを使用し、移行を使用してデフォルトの役割を設定します。この方法ははるかに簡単です。将来のニーズにより適している可能性があるという理由だけで、複雑なソリューションを使用しないでください。

于 2012-08-16T18:04:00.443 に答える
1

user.rb で次のことができます。

after_initialize :set_default_role

private

def set_default_role
  self.role ||= :user
end
于 2016-08-17T01:57:47.820 に答える
0

非常に簡単なユーザーロールソリューションは、次のgemを使用して実装できます:https ://github.com/platform45/easy_roles

于 2012-12-30T09:29:57.617 に答える