rails3 магазин сессий - PullRequest
       1

rails3 магазин сессий

0 голосов
/ 27 августа 2010

Не могли бы вы сказать мне, плз - как использовать в приложении rails3 внешнее хранилище сессий Active Record?

В rails2 его просто

ActiveRecord::SessionStore::Session.establish_connection("sessions_#{RAILS_ENV}")

, но что касается rails3?

Ответы [ 3 ]

5 голосов
/ 09 февраля 2011

Посмотрите config/initializers/session_store.rb

закомментируйте строку об использовании :cookie_store

раскомментируйте строки внизу об использовании :active_record_store

# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information
# (create the session table with "rails generate session_migration")
MyApp::Application.config.session_store :active_record_store

Примечание: "MyApp" будет названием вашего приложения.

1 голос
/ 27 августа 2010

Глядя на источник для activerecord-3.0.0.rc/lib/active_record/session_store.rb Я вижу это:

165     # The database connection, table name, and session id and data columns
166     # are configurable class attributes.  Marshaling and unmarshaling
167     # are implemented as class methods that you may override.

183       # :singleton-method:
184       # Use the ActiveRecord::Base.connection by default.
185       cattr_accessor :connection

208         def connection
209           @@connection ||= ActiveRecord::Base.connection
210         end

Итак, вы должны быть в состоянии сделать что-то вроде: ActiveRecord::SessionStore::Session.connection = establish_connection("sessions_#{RAILS_ENV}"), но я не проверял это.

Вы также можете сделать свой собственный класс сеанса, который у вас будет больше контроля над тем, как он подключается к базе данных, из того же файла:

 34   # You may provide your own session class implementation, whether a
 35   # feature-packed Active Record or a bare-metal high-performance SQL
 36   # store, by setting
 37   #
 38   #   ActiveRecord::SessionStore.session_class = MySessionClass
 39   #
 40   # You must implement these methods:
 41   #
 42   #   self.find_by_session_id(session_id)
 43   #   initialize(hash_of_session_id_and_data)
 44   #   attr_reader :session_id
 45   #   attr_accessor :data
 46   #   save
 47   #   destroy
0 голосов
/ 27 августа 2010

Вам придется использовать это.

Rails.application.config.session_store :active_record_store

Я не уверен, как установить имя таблицы.

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