【问题标题】:RoR - model vs. databaseRoR - 模型与数据库
【发布时间】:2011-08-06 18:57:29
【问题描述】:

RoR中,当我运行以下命令例如:

> rails generate model xyz

而且,如果我去12345_create_xyzs.rb,我会找到类似的东西:

def self.up
    create_table :xyzs do |t|

那么,当我制作model 时,我实际上是在制作一个表格吗?

但是,数据库在哪里?!

【问题讨论】:

    标签: ruby-on-rails database model


    【解决方案1】:

    当您使用rails generate model zyz 时,您是在告诉 Rails 为您生成多个文件。文件12345_create_xyzs.rb 就是所谓的迁移 - 它包含使用与模型关联的表结构填充数据库的说明。

    但是,您确实需要确保数据库存在(例如,在 MySql CREATE DATABASE MyDB 中),并且您的 database.yml 文件具有与该数据库的正确连接信息。

    如果是这样,当您运行 rake db:migrate 时,rake 任务将负责将您的模型结构迁移到数据库。

    【讨论】:

      【解决方案2】:

      当您rails generate model xyz 时,您将指定表 xyz 将在数据库中具有的字段(以及您想要的数据库索引等其他内容)。该表表示数据库中的模型

      要在数据库中创建该表,您将使用 rake db:migrate 迁移模型定义文件 (12345_create_xyzs.rb)。

      模型在 Rails(即 ActiveRecord)代码中表示为一个类,在一个名为 app/models/xyz.rb 的文件中:

      class Xyz < ActiveRecord::Base
        ...
      end
      

      除了上面由rails generate model 创建的迁移文件之外,您还创建了app/models/xyz.rb 文件。在这个类中,您可以放置​​诸如指定模型之间的关系、添加约束和其他您需要的代码等内容。

      【讨论】:

      • 我认为def Xyz &lt; ActiveRecord::Base 必须是class Xyz &lt; ActiveRecord::Base。对吗?
      【解决方案3】:

      您必须运行命令rake db:migrate 才能迁移数据库。命令rake db:create 创建数据库...

      更多信息here

      此外,数据库必须配置到位于此处的文件中:

      <your_project>/config/database.yml
      

      更多信息here。 更一般地说,我认为你真的应该阅读“getting started”。

      【讨论】:

        猜你喜欢
        • 2012-01-28
        • 2012-07-01
        • 2016-01-15
        • 1970-01-01
        • 1970-01-01
        • 2016-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多