0

宣言型承認とネストされたif_attributesのドキュメントを理解するのに少し苦労しています。

モデル:

class Company < ActiveRecord::Base
  has_many :users, :through => :division
end

class Division < ActiveRecord::Base
  belongs_to :company
  has_many :users
end

class User < ActiveRecord::Base
  belongs_to :post
end

私のルール:

role :company_admin do
includes :company_admin
  has_permission_on :companies, :to => [:index, :show, :edit, :update] do
  if_attribute :id => is { user.division.company.id } # This is the problem....
end

私の階層には、自分の会社とすべての部門およびユーザーの編集を許可する必要があるcompany_adminロールが定義されています。会社の管理者の上に別の役割があり、会社を完全に編集および追加する機能と、以下のすべての役割があります。

私がハングアップしているように見えるのは、上記のルールです(これは正しくないことはわかっていますが、例としては単なるフィラーです)。現在のユーザーは自分の会社のみを編集でき、他の会社は編集できないことを確認する必要があります。これはネストされたif_attributeのようですが、ドキュメントのネストされたif_attributesの例を理解できないようです。

よろしくお願いします!

4

1 に答える 1

0

解決には、ネストされたif_attributeは必要ありませんでした。私が使用した例は実際には正しいものでした。このユーザーが継承しているauthorization_rules.rbファイルに他のアクセス許可エラーがあり、混乱を引き起こしていました。

if_attribute :id => is { user.division.company.id } #This was the correct if_attribute
于 2012-04-14T13:48:43.400 に答える