Я пытаюсь запустить спецификации контроллера с устройством 1.3.4.(и заводская девушка) Я следовал инструкциям в git wiki для проекта.Я могу войти в систему как пользователь, используя метод login_user, созданный в макросе, но login_admin завершается ошибкой со следующей ошибкой:
...
sign_in Factory.create(:admin)
Could not find a valid mapping for #<User id: 2023, email: "admin1@gmail.com", .... >
Factory:
Factory.define :user do |f|
f.sequence(:username) {|n| "user#{n}"}
f.sequence(:email) {|n| "user#{n}@gmail.com"}
f.email_confirmation {|fac| fac.email }
f.password "a12345Den123"
f.password_confirmation "a12345Den123"
# f.admin 0
end
Factory.define :admin, :class => User do |f|
f.sequence(:username) {|n| "admin#{n}"}
f.sequence(:email) {|n| "admin#{n}@gmail.com"}
f.email_confirmation {|fac| fac.email }
f.password "a12345Den123"
f.password_confirmation "a12345Den123"
f.admin 1
end
Модуль макроса контроллера:
module ControllerMacros
def login_admin
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user] #it should map to user because admin is not a model of its own. It produces the same result either way.
@admin = Factory.create(:admin)
sign_in @admin
end
end
def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
@user = Factory.create(:user)
sign_in @user
end
end
end
маршруты
devise_for :users
devise_for :admins, :class_name => 'User'
Одним из решений является установка cache_classes = false, однако это не идеально, поскольку я использую spork и не хочу перезапускать его после изменениямодель.
Любая помощь?