Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/devise/mapping.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ def self.find_scope!(obj)
obj = obj.devise_scope if obj.respond_to?(:devise_scope)
case obj
when String, Symbol
return obj.to_sym
obj = obj.to_sym
return obj if Devise.mappings.key?(obj)
when Class
Devise.mappings.each_value { |m| return m.name if obj <= m.to }
else
Expand Down
10 changes: 8 additions & 2 deletions test/mapping_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,20 @@ def fake_request(path, params = {})

test 'find scope uses devise_scope' do
user = User.new
def user.devise_scope; :special_scope; end
assert_equal :special_scope, Devise::Mapping.find_scope!(user)
def user.devise_scope; :subdomain_user; end
assert_equal :subdomain_user, Devise::Mapping.find_scope!(user)
end

test 'find scope raises an error if cannot be found' do
assert_raise RuntimeError do
Devise::Mapping.find_scope!(String)
end
assert_raise RuntimeError do
Devise::Mapping.find_scope!(:invalid_scope)
end
assert_raise RuntimeError do
Devise::Mapping.find_scope!('invalid_scope')
end
end

test 'return default path names' do
Expand Down