Mail views a scoped as well.

This commit is contained in:
José Valim 2009-12-15 01:32:40 +01:00
parent b842a72e77
commit 0a5ba20931
4 changed files with 22 additions and 2 deletions

View File

@ -1,5 +1,6 @@
* enhancements
* Do not care about blank passwords on update
* Mail views are scoped as well
== 0.7.2

View File

@ -26,7 +26,7 @@ class DeviseMailer < ::ActionMailer::Base
# Configure default email options
def setup_mail(record, key)
mapping = Devise.mappings.values.find { |m| m.to == record.class }
mapping = Devise::Mapping.find_by_class(record.class)
raise "Invalid devise resource #{record}" unless mapping
subject translate(mapping, key)
@ -34,7 +34,19 @@ class DeviseMailer < ::ActionMailer::Base
recipients record.email
sent_on Time.now
content_type 'text/html'
body mapping.name => record, :resource => record
body render_with_scope(key, mapping, mapping.name => record, :resource => record)
end
def render_with_scope(key, mapping, assigns)
if Devise.scoped_views
begin
render :file => "devise_mailer/#{mapping.as}/#{key}", :body => assigns
rescue ActionView::MissingTemplate
render :file => "devise_mailer/#{key}", :body => assigns
end
else
render :file => "devise_mailer/#{key}", :body => assigns
end
end
# Setup subject namespaced by model. It means you're able to setup your

View File

@ -56,4 +56,10 @@ class ConfirmationInstructionsTest < ActionMailer::TestCase
confirmation_url_regexp = %r{<a href=\"http://#{host}/users/confirmation\?confirmation_token=#{user.confirmation_token}">}
assert_match confirmation_url_regexp, mail.body
end
test 'renders a scoped if scoped_views is set to true' do
swap Devise, :scoped_views => true do
assert_equal user.email, mail.body
end
end
end

View File

@ -0,0 +1 @@
<%= @resource.email %>