Rails:通过迁移填充现有表
假设我在Rails中有一个现有的迁移:
class CreateStudies < ActiveRecord::Migration def change create_table :studies do |t| t.string :display_name, null: false t.string :tag_name, null: false t.timestamps end add_index :studies, :tag_name, unique: true end end
后来我意识到我想用多行填充这个表,我不想使用rake db:rollback
或seeds.rb文件。 新迁移文件的格式是什么?
只是:
在命令提示符下生成:
rails generate migration AddInitialStudies
并修改生成的迁移的down
方法:
class AddInitialStudies < ActiveRecord::Migration def up Study.create(display_name: "Example name", tag_name: "example_name") end def down Study.delete_all end end
此时我生成一个Study对象,但您可以添加任意数量。
在down
,删除添加的记录,因为再次回滚和迁移将复制添加的记录。 我假设唯一的研究记录是在上面创建的。 注意:tag_name
,它必须是唯一的。
我想最好使用rake任务生成一些新对象而不是使用迁移。 以下是示例代码https://github.com/maxmilan/Adverts_desk/blob/master/lib/tasks/advert_generators.rake#L3 。 您还可以将生成的对象数作为任务参数发送。
- 使用Paperclip和Padrino
- SQLite3和Postgres / Heroku Ruby on Rails查询问题
- BUG Segmentation fault ruby 2.0.0p481(2014-05-08修订版45883)x86_64-darwin13.2.0
- 从schema.rb生成迁移文件
- 我可以使用什么正则表达式从Ruby中的URL获取域名?
- ruby:如果丢失则安装gem的代码
- ‘require’:无法加载这样的文件–sqlite3 / sqlite3_native(LoadError)
- Ruby / Rails – 如何validation小数位?
- 如何与Ruby中的线程进行通信?