0

私はRailsで多対多の関係を持っており、ユーザーは多くのuser_typesを持っており、それに属しています。その逆も同様です。その場合、user_typeには多くの役割があります。

roles_fruitsテーブルのテーブルの例:

role_id:1、fruit_id:6

ロールテーブルの例:

id:1、名前:Bannana Worker

ユーザー向けのテーブルの例:

id:1、user_name:employee143

フルーツテーブルの例:

id:6、名前:bananna

モデルで

user.rb

has_and_belongs_to_many :roles

roles.rb

has_and_belongs_to_many :users

さて、私が達成しようとしているのは、「Bannana Worker」(id 1)の役割を持つユーザーが、「Bannana Worker」(id 1)にアクセスできるようにし、それがないユーザーにはアクセスできないようにすることです。

擬似コードは次のようになります。

user.rolesにフルーツIDが含まれている場合、次のことができます:manage、fruit

どうすればカンカンでこれを達成できますか?それが不可能な場合、良い代替品は何でしょうか?

4

1 に答える 1

1

このようなものを試してみてくださいability.rb

can :manage Fruit do |fruit|
  user.roles.exists?(fruit.id)
end

そしてあなたのコントローラーであなたはすることができます

def your_action
  @fruit = ...

  authorize! :manage, @fruit

  #  ...
end
于 2012-08-10T19:41:04.470 に答える