在轨道上的红宝石中改变模型

时间:2011-10-19 07:07:09

标签: ruby-on-rails model

所有

我需要澄清如何在轨道上的ruby中跟踪模型更改。我开始创建一个模型,说两个字段,名称和电子邮件。这就是我所做的

  1. 通过运行
  2. 创建模型

    “rails生成模型用户first_name:string last_name:string”

    这创建了一个模型文件

    1. 然后我在用户
    2. 中创建的文件中添加了一些验证
    3. 使用注释gem来注释类
    4. 使用“bundle exec rake db:migrate”将我的模型移动到创建表的数据库
    5. 我现在想为模型添加更多字段。我需要遵循哪些步骤?

      1. 我是否在数据库中添加了列并运行了一些命令,以便模型(类)与db同步?

      2. 我是否删除并使用新字段重新创建整个模型?

      3. 建议的方法是什么 VENU

3 个答案:

答案 0 :(得分:2)

您希望使用迁移来更新现有表,您可以从命令行执行整个过程

假设你已经完成了

rails generate model user first_name:string last_name:string

以前你会添加像这样的字段;

rails generate migration AddFieldsToModel new_field:string another_field:string....

Rails在'AddFieldsToModel'上做了魔术,并根据你的值计算出表名。

创建迁移后,您可以在db / migrations中查看它,如果您对它感到满意,只需运行

rake db:migrate

这将更新您的数据库以向其添加新字段。您不需要对实际的model.rb文件执行任何操作 - 但是您需要重新运行注释任务以将其重新注释到model.rb文件。

答案 1 :(得分:0)

我不确定你使用的是什么版本的rails ..但是int rails 3.x它可以作为

完成
rails generate migration add_fields_user

这会在db / migrate / [timestamp] /add_fields_user.rb中创建一个文件

现在您可以在文件中写入并运行rake db:migrate

add_column :users , :city, :string

答案 2 :(得分:0)

您要做的是通过键入来运行迁移。 rails生成迁移description_of_migration。这将创建一个空迁移,您可以定义要添加到模型的内容。在你的情况下,它可能是这样的:

class DescriptionOfMigration < ActiveRecord::Migration

self.up 
 add_column :users, :email, :string  
end

self.down
 remove_column :users, :email
end

end

这使得您可以在模型上双向迁移。