schema.rb文件未更新

时间:2015-04-24 02:46:30

标签: ruby-on-rails postgresql rake

在我的应用中,我编辑了此处显示的迁移文件:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :first_name
      t.string :last_name
      t.string :dj_alias
      t.boolean :site_admin
      t.integer :station_id
      t.string :byline
      t.string :bio

      t.timestamps null: false
    end
  end
end

拥有生物和旁线字段。但是,当我运行rake db:reset时,schema.rb文件中没有任何更改。我看到的唯一错误就是这个代码块:

ActiveRecord::Base.connection.tables.each do |table|
  result = ActiveRecord::Base.connection.execute("SELECT id FROM #{table} ORDER BY id DESC LIMIT 1") rescue ( puts "Warning: not procesing table #{table}. Id is missing?" ; next )
  ai_val = result.any? ? result.first['id'].to_i + 1 : 1
  puts "Resetting auto increment ID for #{table} to #{ai_val}"

  ActiveRecord::Base.connection.execute("ALTER SEQUENCE #{table}_id_seq  RESTART WITH #{ai_val}")
end

位于seeds.rb文件的底部,用于处理种子文件的索引。当我运行rake db:reset时,第一行中的rescue语句显示:警告:未处理表schema_migrations。我不见了?

我想我很困惑为什么这句话会拯救这个?虽然看起来它可能是原因,但架构.rb重置是否在访问seeds.rb文件之前发生了?

以下是rake db:migrate:status

的输出
 Status   Migration ID    Migration Name
--------------------------------------------------
up     20150225041954  Create songs
up     20150225042739  Create albums
up     20150225043102  Create artists
up     20150225043854  Create playlists
up     20150225044118  Create users
up     20150225044314  Create stations
up     20150225061259  Create featured artists
up     20150225153938  Add devise to users
up     20150225200646  Create reviews
up     20150321171830  Stations users
up     20150323200255  Add last fm to album
up     20150323200432  Add last fm to artist
up     20150323200513  Add last fm to song
up     20150325052314  Albums stations
up     20150325061241  Playlist songs
up     20150327172516  Add image url to albums
up     20150327172532  Add image url to artists

1 个答案:

答案 0 :(得分:1)

要在迁移文件中应用新更改,您需要运行rake db:migrate。如果在进行更改之前已经运行了迁移,则运行rake db:rollback以回滚迁移并再次应用它。

rake db:reset不会在迁移文件中应用新的更改。它尝试加载schema.rb文件中已有的内容。

http://edgeguides.rubyonrails.org/active_record_migrations.html#setup-the-database&amp; http://edgeguides.rubyonrails.org/active_record_migrations.html#resetting-the-database了解rake db:reset如何运作的详细信息。

运行rake db:migrate:status以查看正在运行的迁移。