declerative_authorization по проблеме пользователя - PullRequest
2 голосов
/ 11 апреля 2010

Я пытаюсь заблокировать все методы по умолчанию, кроме создания и обновления в моем контроллере пользователей с помощью declerative_authorization. Но в то время, когда я добавляю filter_resource_access или filter_access_to в свой usersController, я всегда получаю «Не могу найти пользователя без идентификатора». Кто-нибудь хочет объяснить, почему это может происходить?

    class UsersController < ApplicationController
  filter_resource_access</p>

<p>def new
    @user = User.new
  end</p>

<p>def create
    @user = User.new(params[:user])
    if @user.save
      flash[:notice] = "Account registered!"
      redirect_to account_url
    else
      render :action => :new
    end
  end</p>

<p>def show
    @user = @current_user
  end</p>

<p>def edit
    @user = @current_user
  end</p>

<p>def update
    @user = @current_user # makes our views "cleaner" and more consistent
    if @user.update_attributes(params[:user])
      flash[:notice] = "Account updated!"
      redirect_to account_url
    else
      render :action => :edit
    end
  end
end

1 Ответ

2 голосов
/ 11 апреля 2010

Вы должны установить переменную @user перед вызовом filter_access_to с помощью before_filter, так как Declarative_authorization пытается получить доступ к @user при вызове filter_access_to.

before_filter :set_user
filter_access_to :all

...

protected

def set_user
  @user = @current_user
end

Может быть, вы устанавливаете для параметра attribute_check значение true при вызове filter_access_to? У меня есть аналогичный контроллер, и мне не нужен before_filter.

Еще одна вещь, которая может быть причиной этого, - это using_access_control вызов в вашей User модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...