ruby-on-rails – 基于用户参数的rails中不同的数据库连接
发布时间:2020-12-17 02:28:59 所属栏目:百科 来源:网络整理
导读:我正在重构遗留php应用程序的一些功能,它使用具有相同结构的多个数据库,每种语言一个.当用户登录选择他的语言,然后所有以下连接都是使用该应用程序的数据库进行的,其代码如下: $db_name = 'db_appname_' . $_SESSION['language'];mysql_connect(...);mysql_
我正在重构遗留php应用程序的一些功能,它使用具有相同结构的多个数据库,每种语言一个.当用户登录选择他的语言,然后所有以下连接都是使用该应用程序的数据库进行的,其代码如下:
$db_name = 'db_appname_' . $_SESSION['language']; mysql_connect(...); mysql_select_db($db_name); 我想重构数据库,但目前它不是一个选项,因为其他软件应该在新应用程序开发的同时保留生产旧结构,并且在开发之后的一段时间内. 我看到了this question,但问题和建议的宝石都很老了,似乎他们没有使用Rails 3. 哪个是在我的新rails 3应用程序中实现此行为的最佳方法?还有其他选择可以避免我改变数据库结构并满足我的需求吗? 最后的细节:在php应用程序中,甚至登录信息都保存在单独的表中,即每个数据库都有自己的用户表,当用户登录时,它也会在登录表单中传递语言参数.我想在新应用程序中使用devise for auth,这可能不适用于这种方法,所以我想在具有语言属性的单独用户模型中复制(我知道,这不是DRY)登录信息和一个单独的数据库共享语言,以便在我的应用程序中使用设计功能.这会引起任何问题吗? 编辑: 为了完整起见,我结束了这个yml配置文件 production: &production adapter: mysql host: localhost username: user password: secret timeout: 5000 production_italian: <<: *production database: db_app_ita production_english: <<: *production database: db_app_eng 并在基本模型中使用此配置(实际上不是这个,但这是为了保持清晰) MyModel < AR::Base establish_connection "production_#{session[:language]}" ... end 解决方法
在模型中使用establish_connection:
MyModel < AR::Base establish_connection "db_appname_#{session[:language]}" ... end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |