adding action and subject variables to I18n unauthorized message - closes #142

This commit is contained in:
Ryan Bates 2010-09-07 15:48:07 -07:00
parent bf9b8ad1a6
commit 158c908d3b
3 changed files with 10 additions and 2 deletions

View File

@ -1,6 +1,6 @@
Gem::Specification.new do |s|
s.name = "cancan"
s.version = "1.3.4"
s.version = "1.4.0.beta1"
s.author = "Ryan Bates"
s.email = "ryan@railscasts.com"
s.homepage = "http://github.com/ryanb/cancan"

View File

@ -207,7 +207,9 @@ module CanCan
def unauthorized_message(action, subject)
keys = unauthorized_message_keys(action, subject)
message = I18n.translate(nil, :scope => :unauthorized, :default => keys + [""])
variables = {:action => action.to_s}
variables[:subject] = (subject.class == Class ? subject : subject.class).to_s.downcase
message = I18n.translate(nil, variables.merge(:scope => :unauthorized, :default => keys + [""]))
message.blank? ? nil : message
end

View File

@ -327,5 +327,11 @@ describe CanCan::Ability do
@ability.unauthorized_message(:update, Array).should == "modify array"
@ability.unauthorized_message(:edit, Array).should == "modify array"
end
it "should have variables for action and subject" do
I18n.backend.store_translations :en, :unauthorized => {:manage => {:all => "{{action}} {{subject}}"}} # old syntax for now in case testing with old I18n
@ability.unauthorized_message(:update, Array).should == "update array"
@ability.unauthorized_message(:edit, 1..3).should == "edit range"
end
end
end