![]() |
1
39
默认情况下,Rails不是为多数据库体系结构设计的,而且在大多数情况下,它根本就没有意义。 但可以,您可以使用不同的数据库和连接。 以下是一些参考资料: |
![]() |
2
26
如果您能够控制和配置每个Rails实例,并且由于它们处于待机状态而浪费资源,那么就可以省去一些麻烦,只需更改database.yml就可以修改每个实例上使用的数据库连接。如果您关心性能,这种方法不会降低性能。 对于仅绑定到一个数据库上单个唯一表的模型,可以在模型内部调用establish_connection:
如下所述: http://apidock.com/rails/ActiveRecord/Base/establish_connection/class 您将有一些模型使用一个数据库中的表,其他不同的模型使用其他数据库中的表。 如果您有相同的表,在不同的数据库中是通用的,并且由单个模型共享,那么ActiveRecord将不会帮助您。早在2009年,我就要求在我正在工作的一个项目中使用Rails2.3.8。我为每个客户都有一个数据库,并用他们的ID命名这些数据库。因此,我创建了一个方法来更改ApplicationController内部的连接:
并将该方法作为 前置滤波器 所有控制器:
因此,对于每个控制器的每个操作,当定义和设置参数[:company_id]时,它会将数据库更改为正确的数据库。 为了处理迁移,我扩展了ActiveRecord::Migration,使用一种方法查找所有客户并使用每个ID迭代一个块:
请注意,通过这样做,您将不可能在同一操作中从两个不同的数据库进行查询。你可以打电话 转换数据库 但是,当您尝试使用执行查询的方法时,如果对象不再链接到正确的数据库,就会变得很糟糕。此外,很明显您将无法联接属于不同数据库的表。 要正确处理这一点,ActiveRecord应该大大延长。现在应该有一个插件来帮助您解决这个问题。一个快速的研究给了我这个: DB CalMe: http://kovyrin.github.com/db-charmer/ 我愿意试试。让我知道什么对你有用。 |
![]() |
3
12
我通过使用另一个数据库将它添加到我的模型顶部来克服这个问题。
|
![]() |
4
4
您还应该查看这个名为db charmer的项目: http://kovyrin.net/2009/11/03/db-charmer-activerecord-connection-magic-plugin/
|
![]() |
5
2
值得注意的是,在所有这些解决方案中,您需要记住关闭自定义数据库连接。你 将 连接用完,否则会看到奇怪的请求超时问题。 一个简单的解决方案是清除活跃的连接!在控制器的后过滤器中。
|
![]() |
6
0
在config/database.yml中执行类似的操作
然后,在您的模型中,您可以使用
|
![]() |
7
0
您在问题中描述的是多租户(具有相同结构的数据库,每个数据库中都有不同的数据)。这个 Apartment gem 很适合这个。 对于Rails中多个数据库的一般问题:ActiveRecord支持多个数据库,但Rails不提供管理它们的方法。我最近创建了 Multiverse 宝石来解决这个问题。 |
![]() |
blogger13 · 视频租赁店数据库的规范化 5 月前 |
![]() |
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 6 月前 |
![]() |
relatively_random · 确保两个表之间一致的共同参考 6 月前 |
|
Grenish Rai · Firestore错误“用户文档不存在” 10 月前 |
![]() |
Saijo-Shi · PLpgsql中的更新触发器 10 月前 |
![]() |
Dante · Django::配置不当:池不支持持久连接 10 月前 |
![]() |
YouLocalRUser · 删除重复行,保留第一行 11 月前 |