find_by_field не работает должным образом в ActiveRecord - PullRequest
0 голосов
/ 26 декабря 2009

У меня есть навигационная система, которая предоставляет постоянную ссылку для любой настройки связи.

Когда я запускаю строку через скрипт / консоль, она возвращает следующее:

>> Navigation.find_by_permalink("gems")
=> #<Navigation id: 10, text: "Gems", parent: nil, destination_controller: "pages", destination_action: "show", destination_id: "1", permalink: "gems", created_at: "2009-12-26 14:56:28", updated_at: "2009-12-26 14:56:28", previous: 9>

Когда я помещаю в свое приложение, я получаю это:

ActiveRecord::RecordNotFound in NavigationsController#permalink

 Couldn't find Navigation without an ID

Мой запрос был "/ permalink / gems", а связанный маршрут:

map.permalink "permalink/:permalink", :controller => 'navigations', :action => 'permalink'

Код контроллера, который обрабатывает этот запрос:

def permalink
    @nav=Navigation.find_by_permalink(params[:permalink])
    redirect_to :controller => @nav.destination_controller, :action => @nav.destination_action, :id => @nav.destination_id
end

Кто-нибудь знает, почему это происходит?

1 Ответ

0 голосов
/ 27 декабря 2009

Проблема вызвана декларативным разрешением. Он использовал действие постоянной ссылки RESTful, поэтому моя навигационная находка не использовалась.

Чтобы отключить декларативную авторизацию для всех действий, исключая RESTful в контроллере контроллера:

filter_resource_access

до:

filter_access_to :index, :show, :edit, :new, :create, :update, :destroy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...