Ruby on rails 不同的数据库适配器如何改变数据库CRUD?
假设我有一个模型和一张叫做“人”的桌子 我在使用Sqlite3适配器时运行以下代码: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)
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层的实现方式不同