Я пытался поиграть с MongoDb и использовал Rails Tutorial для создания пользователей. Я использую гем Mongo_mapper. У меня все это настроено, но я нахожусь в точке, где кажется, что функции / методы ActiveRecord, похоже, не работают. Все мои тесты работают до этого момента.
У меня есть тумблер! чтобы работать, добавив это в мою модель пользователя, ища источник переключения в APIDock
def toggle!(field)
send "#{field}=", !self.send("#{field}?")
save
end
Но когда я пытаюсь использовать эту функцию, чтобы проверить, является ли модель User логической для admin
def admin?
self.admin
end
Я получаю эту ошибку из своего теста.
1) UsersController DELETE 'destroy' as a non-signed-in user should deny access
Failure/Error: delete :destroy, :id => @user
NoMethodError:
undefined method `admin?' for nil:NilClass
# ./app/controllers/users_controller.rb:66:in `admin_user'
# ./spec/controllers/users_controller_spec.rb:253:in `block (4 levels) in <top (required)
Вот что у меня есть для контроллера
class UsersController < ApplicationController
before_filter :authenticate, :only => [:index, :edit, :update]
before_filter :correct_user, :only => [:edit, :update]
before_filter :admin_user, :only => :destroy
.
.
.
def destroy
User.find(params[:id]).destroy
flash[:success] = "User deleted."
redirect_to users_path
end
private
def authenticate
deny_access unless signed_in?
end
def correct_user
@user = User.find(params[:id])
redirect_to(root_path) unless current_user?(@user)
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end
Но я получаю доступ администратора для работы с моим администратором, и я могу удалить пользователя.
<li>
<%= link_to user.name, user %>
<% if current_user.admin? %>
<%= link_to "delete", user, :method => :delete, :confirm => "You sure?",
:title => "Delete #{user.name}" %>
<% end %>
</li>
Любые предложения о том, как это исправить, так как я застрял на том, как заставить приложение перенаправить после удаления пользователя.