Я около часа гулял с университетом Google, но по этой теме нет ни одной хорошей документации :-( Надеюсь, кто-то может помочь. Я готов купить книгу так же долго, как кто-нибудь может сказать мне, какая из них.
Я использую следующие версии:
- рельсы 3.2.6,
- ruby 1.9.3p194 (2012-04-20 редакция 35410) [x86_64-darwin11.4.0]
Чтобы начать использовать хранилище сессий в Active Record вместо cookie, я сделал следующее:
-
Обновите
config/initializers/session_store.rb
. Прокомментировал первую строку и оставил комментарий к последней, поэтому у меня есть:# Be sure to restart your server when you modify this file. # Myapp::Application.config.session_store :cookie_store, key: '_elegato_session' # 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
-
rake db:sessions:create
invoke active_record create db/migrate/20120729025112_add_sessions_table.rb
-
rake db:migrate
== CreateLinkedinUsers: migrating ============================================ -- create_table(:linkedin_users) -> 0.0236s == CreateLinkedinUsers: migrated (0.0237s) =================================== == AddSessionsTable: migrating =============================================== -- create_table(:sessions) -> 0.0012s -- add_index(:sessions, :session_id) -> 0.0006s -- add_index(:sessions, :updated_at) -> 0.0006s == AddSessionsTable: migrated (0.0026s) ======================================
-
Чтобы узнать, какая таблица на самом деле создана, я открываю файл sqlite3
sqlite> .schema sessions CREATE TABLE "sessions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "session_id" varchar(255) NOT NULL, "data" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL); CREATE INDEX "index_sessions_on_session_id" ON "sessions" ("session_id"); CREATE INDEX "index_sessions_on_updated_at" ON "sessions" ("updated_at");
Итак, в таблице сеансов есть поле "данные", в котором будет храниться все, что связано с сеансом.
Теперь на мой вопрос :-)
Мне нужно хранить значения для 2 переменных в сеансе: access_token и request_token. Могу ли я использовать следующие? (как я использовал для хранения значений сеанса для куки)
session[:access_token] = <blah>
session[:request_token] = <some other blah?
И если это работает, ruby сохраняет обе переменные в поле "data" таблицы как массив.
Большое спасибо за помощь!