代码之家  ›  专栏  ›  技术社区  ›  Starkers

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

  •  0
  • Starkers  · 技术社区  · 11 年前

    假设我有一个模型和一张名为“人”的桌子。

    我在使用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) 
    

    它们是怎么一样的?这是因为他们正在经历“活动记录”吗?

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

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

    1 回复  |  直到 11 年前
        1
  •  1
  •   Community CDub    7 年前

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

    从理论上讲,如果您的应用程序与Sqlite3一起工作,那么当您更改database.yml时,它将与其他数据库一起工作。但这并不能保证,因为数据库之间存在特殊性。示例 here , here here 。你必须小心,因为有些东西可能在你的第一个数据库中工作,然后当你更改它时,它会坏掉。

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