2

Rails3アプリで宣言型認証を使用することを計画しています。私は次のモデル関係を持っています:

class Role < ActiveRecord::Base
  has_many :permissions, :dependent => :destroy
  has_many :users, :through => :permissions, :uniq => true  
end

class Permission < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
  belongs_to :context
end

class User < ActiveRecord::Base
  has_many :permissions, :dependent => :destroy
  has_many :roles, :through => :permissions

  roles.map do |role|
      role.name.underscore.to_sym
  end
end

class Context < ActiveRecord::Base
  has_many :contexts, :dependent => :destroy

end

ここでの概念は、さまざまなデータセットをさまざまなコンテキストにセグメント化することです。ただし、特定のユーザーは、コンテキストごとに異なる役割を持つ場合があります。たとえば、あるコンテキストでは管理者、別のコンテキストでは基本ユーザーです。コントローラとビューで使用するためにcurrent_userとcurrent_contextを実装しました。

if_attributeを使用して、適切なデータセットに対する適切なアクセス許可を参照する予定です。ただし、問題は、モデル(role_symbolsが定義されている)でcurrent_contextを参照できない、または参照すべきでない場合に、defrole_symbolsが特定のコンテキストでユーザーに関連付けられたロールのみを返すようにするにはどうすればよいかです。

何か案は?

4

1 に答える 1

1

ここで答えを見つけるのに十分な運がありました:

http://blog.drivingthevortex.nl/2010/01/24/using-declarative_authorization-with-subdomains/

于 2010-12-21T02:44:59.057 に答える