Ruby on Rails 4,将会话存储在单独的数据库中

时间:2014-05-07 07:58:42

标签: ruby-on-rails ruby database session ruby-on-rails-4

我有2个rails应用程序(版本4.0和4.1),它们有自己的数据库和另一个数据库的数据库连接器。这两个应用都有一个登录表单,现在我想分享会话。

在两个应用程序中,我添加了activerecord-session_store gem,在config / initializers / seesion_store.rb文件中,我将session_store设置为active_record_store。

如何判断一个应用程序是否使用其他数据库(而不是默认的db-connector)来存储会话?

有没有办法与Cookie分享会话?这两个应用都有不同的网址。

我期待着你的回复。

1 个答案:

答案 0 :(得分:1)

您可以使用自己的类覆盖会话存储类,并具有从第二个数据库写入和读取会话的功能。

示例类:

  

https://github.com/rails/activerecord-session_store/blob/master/lib/active_record/session_store/sql_bypass.rb

在这里,您可以connection返回第二个数据库连接。

参考文档:

  

https://github.com/rails/activerecord-session_store

通过设置

,您可以提供自己的会话类实现,无论是功能丰富的Active Record还是裸机高性能SQL存储。
ActionDispatch::Session::ActiveRecordStore.session_class = MySessionClass

您必须实施以下方法:

self.find_by_session_id(session_id)
initialize(hash_of_session_id_and_data, options_hash = {})
attr_reader :session_id
attr_accessor :data
save
destroy

示例SqlBypass类是一个通用的SQL会话存储。您可以将其用作高性能数据库特定商店的基础。