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

Ruby on rails RubyonRails4,将会话存储在单独的数据库中,ruby-on-rails,ruby,database,session,ruby-on-rails-4,Ruby On Rails,Ruby,Database,Session,Ruby On Rails 4,我有两个rails应用程序(版本4.0和4.1),它们有自己的数据库和一个连接到另一个数据库的secound db连接器。这两个应用都有一个登录表单,现在我想共享会话 在这两个应用程序中,我都添加了activerecord-session_store gem,并在config/initializers/seision_store.rb文件中,将session_store设置为active_record_store 我如何告诉一个应用程序它使用另一个数据库(不是默认的db连接器)来存储会话 有没有

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

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

我如何告诉一个应用程序它使用另一个数据库(不是默认的db连接器)来存储会话

有没有办法与Cookie共享会话?两个应用程序都有不同的URL


我期待着您的答复。

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

示例类:

在这里,您可以让
连接
返回第二个db连接

参考文件:

通过设置,您可以提供自己的会话类实现,无论是功能打包的活动记录还是裸机高性能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会话存储。您可以使用它作为高性能数据库特定存储的基础。

谢谢您的回答,但我只使用了一行config/environments.rb
ActiveRecord::SessionStore::Session.build_connection(“secound_db#{Rails.env}”)
@mc388太棒了!感谢您分享解决方案。您的评论/回答真的很有帮助。花了很多时间在谷歌上寻找。如果你重新提交作为你自己问题的答案会更好。无论如何,谢谢你的帮助:)