Ruby on rails 3.1 Rails生成迁移
我目前有一个名为Products的迁移,我只想在这个迁移中再添加一些字符串,比如描述和产品类型。最好的方法是什么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
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