Ruby on rails 3.1 Rails生成迁移

Ruby on rails 3.1 Rails生成迁移,ruby-on-rails-3.1,Ruby On Rails 3.1,我目前有一个名为Products的迁移,我只想在这个迁移中再添加一些字符串,比如描述和产品类型。最好的方法是什么 class CreateProducts < ActiveRecord::Migration def change create_table :products do |t| t.string :name t.decimal :price t.text :description t.timestamps

我目前有一个名为Products的迁移,我只想在这个迁移中再添加一些字符串,比如描述和产品类型。最好的方法是什么

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.string  :name
      t.decimal :price
      t.text    :description
      t.timestamps
    end
   end
 end
class CreateProducts
假设您使用上面的迁移创建了表,那么要添加产品类型(您已经有了说明),您将执行以下操作:

# db/migrate/20130201121110_add_product_type_to_product.rb

class AddProductTypeToProduct < ActiveRecord::Migration
  def change
    add_column :products, :product_type, :string
    Product.all.each do |product|
      product.update_attributes!(:product_type => 'unknown')
    end
  end
end
#db/migrate/2013020112110_添加_产品_类型_至_产品.rb
类AddProductTypeTopProduct“未知”)
结束
结束
结束

在任何实际应用程序的开发过程中,都会进行大量迁移,这些迁移基本上都是DDL(数据定义语言)语句。在现实生活中,您将有多个环境(开发、测试、生产等),并且很可能在生产中有一个版本时更改开发数据库。因此,Rails的方法是为数据库的任何更改生成新的迁移,而不是直接更改现有迁移文件

因此,请熟悉迁移

对于具体问题,您可以执行以下操作:

rails g migration add_attributes_to_products attr1 attr2 attr3
这将生成一个新的迁移文件,用于向products表(产品模型)添加3个新属性。属性的默认类型为
string
。对于其他用户,您可以指定如下内容:

rails g migration add_attributes_to_products attr1:integer attr2:text attr3:enum
快跑

rails g migration add_description_to_products description:string
rails g migration add_product_type_to_products product_type:string
然后跑

rake db:migrate

如果最后一个操作是迁移,请使用
rollback

rake db:rollback
然后在迁移文件中添加属性

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.string  :name
      t.decimal :price
      t.text    :description
      t.string  :product_type  #adding product_type attribute to the products table
      t.timestamps
    end
   end
 end
如果“迁移”不是您的最后一个操作,请在上述答案中生成一个新的迁移文件

rails g migration add_attributes_to_products product_type:string
上面的代码只生成迁移文件,但您希望使用
rake db:migrate
来迁移文件

如果您想对该迁移文件进行更多更改,例如添加更多的Atribute,请在迁移之前进行更改,否则,如果您的最后一个操作是迁移,或者您需要生成另一个迁移文件,则必须使用我在开头提到的方法。 查看此链接以了解有关迁移的更多信息

rails生成迁移将描述添加到产品中

AddDescriptionToProducts < ActiveRecords:: Migration[v]
  def change
    add_column :products :description :string
    add_column :name_of_table :name_of_column :data_type
  end
AddDescriptionToProducts

运行rake db:migrate,您的模式将自动更新rb

您看过
http://guides.rubyonrails.org/migrations.html#using-更改方法
是的,我已经阅读了手册,但有些事情我不清楚。这就是我问的原因。我将感谢您一步一步地提供一些指导:)如果您还没有迁移该迁移,您可以使用
t.integer:product\u type
直接更改到该迁移文件。在进行开发时,我的方法是直接更改为该迁移,即使在迁移之后,当它准备好推送时,我所做的只是重置我的数据库或重新创建我的数据库。这样可以使迁移文件更干净。只需分享,希望能有所帮助。对于低于3的rails版本
rails生成迁移
命令将是
script/generate migration…
新列的默认类型是
string
,因此您实际上不必在命令中显式显示,除非它是另一种类型。希望它能帮助其他人
AddDescriptionToProducts < ActiveRecords:: Migration[v]
  def change
    add_column :products :description :string
    add_column :name_of_table :name_of_column :data_type
  end