2010-05-17 3 views
0

Я пытаюсь предоставить HTTP api для своего приложения, которое запрашивает db, доступный только для чтения (для целей репликации). Я обнаружил, что мое приложение несколько раз падает при выполнении запроса b/c, когда вызов пытается обновить таблицу сеансов всякий раз, когда я запрашиваю db. Этого не происходит, когда я возвращаю некоторый текст, не попадая в базу данных для получения информации.Rails - как я могу запросить db без касания таблицы сеансов

class APIController < AplicationController 

    def view 
    data = Product.find(params[:id]).to_json # will fail 
    data = { :one => 1, :two => 2 }.to_json # will succeed 

    respond_to do |format| 
     format.html { render :json => data } 
    end 
    end 

end 

Как ограничить его от прикосновения к таблице сессий по этому запросу (это в настоящее время выдачи UPDATE на поле updated_at для этой сессии). Благодарю.

ответ

1

Какая версия Rails это? В Rails 2.3 сеансы ленивы загружены, поэтому проверьте ApplicationController и ваши плагины на любой код (возможно, в before_filter), который получает доступ к любому значению в вашем сеансе. Вы хотите избежать этого фильтра для этого действия view.

+0

yup, я бегу 2.3.5. спасибо – sa125

+0

оказался одним из вызовов before_filter - спасибо! – sa125

+0

Добро пожаловать. – jdl

1

Используете ли вы сеанс в этом запросе? например, для аутентификации. Это может быть проблемой.

Вы можете отключить сеанс для контроллера и/или действий:

class MyController < ApplicationController 
    session :off, :only => :view 

    ... 

end 

работает много как обычные фильтры контроллера.

+2

«session: off» устарел в Rails 2.3. Хотелось бы, чтобы этого не было, потому что это намного чище, чем плагины для управления кодом для доступа к значению сеанса. http://guides.rubyonrails.org/2_3_release_notes.html – jdl

+1

Ах, я вижу. Черт. –

Смежные вопросы