不同的数据库适配器如何改变数据库CRUD?

时间:2013-10-15 17:29:59

标签: ruby-on-rails database

假设我有一个名为'people'的模型和表格。

我在使用Sqlite3适配器时运行此代码:

People.create(name: "jim", age: 23)

这会创建一个新人:

1|jim|23|2013-10-15 16:59:24.708963|2013-10-15 16:59:24.708963

现在,如果我使用的是PostgreSQL而不是Sqlite3,那么这个过程是完全相同的,对吧?为了创造另一个人,我写道:

People.create(name: "alice", age: 32) 

它们如何相同?这是因为他们正在经历'activerecord'吗?

我认为主动记录只是一个允许使用数据库轻松进行CRUD的库,我是否正确?由于database.yml中的设置,它是否也知道如何与不同的数据库进行交互?

如果某个应用程序与sqlite3一起使用,它是否适用于任何数据库,为该应用程序的未来开发人员安装数据库并正确配置database.yml?

1 个答案:

答案 0 :(得分:1)

你是对的,通过Rails为Sqlite3,PostgreSQL或任何数据库的数据库创建用户的过程是一样的。 ActiveRecord为您处理所有这些,它知道如何使用database.yml中的配置执行此操作。

理论上,如果您的应用程序与Sqlite3一起使用,则在更改database.yml时它将与其他数据库一起使用。但由于数据库之间的特殊性,这不能得到保证。示例hereherehere。你必须要小心,因为某些东西可能在你的第一个数据库中有效,然后当你改变它时会中断。

对于严肃的项目,我建议使用相同的数据库进行开发和生产。