8.2 Iteration C1: Creating a Cart 7.4 Iteration B4: Linking to the Cart
rake db:sessions:create
(in /home/rubys/git/awdwr/work-191-238/depot)
exists db/migrate
create db/migrate/20100528071201_create_sessions.rb
rake db:migrate
mv 20100528071201_create_sessions.rb 20100301000004_create_sessions.rb
(in /home/rubys/git/awdwr/work-191-238/depot)
== CreateSessions: migrating =================================================
-- create_table(:sessions)
-> 0.0018s
-- add_index(:sessions, :session_id)
-> 0.0006s
-- add_index(:sessions, :updated_at)
-> 0.0007s
== CreateSessions: migrated (0.0035s) ========================================
sqlite3 db/development.sqlite3 .schema
CREATE TABLE "products" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "image_url" varchar(255), "created_at" datetime, "updated_at" datetime, "price" decimal(8,2) DEFAULT 0);
CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL);
CREATE TABLE "sessions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "session_id" varchar(255) NOT NULL, "data" text, "created_at" datetime, "updated_at" datetime);
CREATE INDEX "index_sessions_on_session_id" ON "sessions" ("session_id");
CREATE INDEX "index_sessions_on_updated_at" ON "sessions" ("updated_at");
CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version");
edit config/initializers/session_store.rb
# Be sure to restart your server when you modify this file.
# Your secret key for verifying cookie session data integrity.
# If you change this key, all old sessions will become invalid!
# Make sure the secret is at least 30 characters and all random,
# no regular words or you'll be exposed to dictionary attacks.
ActionController::Base.session = {
:key => '_depot_session',
:secret => 'da303fd58077da97f5b6c0c0671ae9f869e8130c51a1300e9d938ddab8eb635ea576206be1cd3b45cb4b3715e1a2fb72c0e0769e8322332f77694e45a1ed9573'
}
# 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 "rake db:sessions:create")
ActionController::Base.session_store = :active_record_store
edit app/controllers/application_controller.rb
# Filters added to this controller apply to all controllers in the application.
# Likewise, all the methods added will be available for all controllers.
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery # See ActionController::RequestForgeryProtection for details
# Scrub sensitive parameters from your log
# filter_parameter_logging :password
end
edit app/controllers/store_controller.rb
private
def find_cart
session[:cart] ||= Cart.new
end
8.2 Iteration C1: Creating a Cart 7.4 Iteration B4: Linking to the Cart