简洁的想法

仁爱、喜乐、和平、忍耐、恩慈、良善、信实、温柔、节制

如何使用ActiveRecordStore(数据库)做为session存储方案

| Comments

首先交待环境:

1
2
3
4
$ ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux]
$ rails -v
Rails 3.2.2

网上一大堆过期信息, 说是可以用下面的方法, 结果如下:

1
2
3
$ rake db:session:create
rake aborted!
Don't know how to build task 'db:session:create'

其实大家找一下session的配置文件就可以发现正确方法了:
config/initializers/session_store.rb

1
2
3
4
5
6
7
8
# Be sure to restart your server when you modify this file.

Neten::Application.config.session_store :cookie_store, key: '_neten_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")
# Neten::Application.config.session_store :active_record_store

正确的方法是运行

1
$ rails generate session_migration

或者用原来的命令, 不过session要加个s:
1
$ rake db:sessions:create

再把session_store.rb最后一行去掉注释, 注释掉上面那行用cookie的, 最后运行:

1
$ rake db:migrate

别忘了重启服务器。

Comments