1
0
Fork 0
mirror of https://github.com/varvet/pundit.git synced 2022-11-09 12:30:11 -05:00

Merge pull request #59 from elabs/inject_policy

Allow policies and scopes to be injected into controllers.
This commit is contained in:
Thomas Klemm 2013-09-02 02:38:16 -07:00
commit ee6b1ed998
2 changed files with 18 additions and 2 deletions

View file

@ -63,12 +63,14 @@ module Pundit
def policy_scope(scope)
@_policy_scoped = true
Pundit.policy_scope!(pundit_user, scope)
@policy_scope or Pundit.policy_scope!(pundit_user, scope)
end
attr_writer :policy_scope
def policy(record)
Pundit.policy!(pundit_user, record)
@policy or Pundit.policy!(pundit_user, record)
end
attr_writer :policy
def pundit_user
current_user

View file

@ -242,6 +242,13 @@ describe Pundit do
it "throws an exception if the given policy can't be found" do
expect { controller.policy(article) }.to raise_error(Pundit::NotDefinedError)
end
it "allows policy to be injected" do
new_policy = OpenStruct.new
controller.policy = new_policy
controller.policy(post).should == new_policy
end
end
describe ".policy_scope" do
@ -252,5 +259,12 @@ describe Pundit do
it "throws an exception if the given policy can't be found" do
expect { controller.policy_scope(Article) }.to raise_error(Pundit::NotDefinedError)
end
it "allows policy_scope to be injected" do
new_scope = OpenStruct.new
controller.policy_scope = new_scope
controller.policy_scope(post).should == new_scope
end
end
end