Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 不同的数据库适配器如何改变数据库CRUD?_Ruby On Rails_Database - Fatal编程技术网

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

Ruby on rails 不同的数据库适配器如何改变数据库CRUD?,ruby-on-rails,database,Ruby On Rails,Database,假设我有一个模型和一张叫做“人”的桌子 我在使用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)

假设我有一个模型和一张叫做“人”的桌子

我在使用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) 
它们是怎么一样的?这是因为他们正在进行“活动录制”吗

我认为active record只是一个库,允许使用数据库进行简单的CRUD,这对吗?由于您在
database.yml
中的设置,它还知道如何与不同的数据库交互吗


如果应用程序与sqlite3一起工作,它是否与任何数据库一起工作,前提是应用程序的未来开发人员安装数据库并正确配置database.yml?

如果您是正确的,则通过Rails为具有sqlite3、PostgreSQL或任何数据库的数据库创建用户的过程将是相同的。ActiveRecord为您处理所有这些,并且它知道如何通过database.yml中的配置来实现这一点

理论上,如果您的应用程序使用Sqlite3,那么当您更改database.yml时,它将使用其他数据库。但这并不能保证,因为数据库之间的特性。例如,和。您必须小心,因为有些东西可能在第一个数据库中工作,然后在您对其进行更改时会中断


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

ActiveRecord支持的每个db供应商都有一个适配器层,用于将AR生产的Arel转换为db特定的详细信息。虽然它们与应用层“相同”,但在db层的实现方式不同