Ruby on Rails 3 - 为什么我在迁移过程中遇到错误以及默认数据


    rails g migration CreateStates

然后将以下代码添加到迁移中:

====

============================
class CreateStates < ActiveRecord::Migration
  def self.up
    create_table :states do |t|
      t.column :name, :string
      t.column :abbreviation, :string
    end
    State.create :name => 'Alabama', :abbreviation => 'AL'
    State.create :name => 'Alaska', :abbreviation => 'AK'
    State.create :name => 'Arizona', :abbreviation => 'AZ'
  end
  def self.down
    drop_table :states
  end
end

====

============================

我收到一个错误:

** 调用数据库:迁移 (first_time)
** 调用环境 (first_time)
** 执行环境
** 执行数据库:迁移
== 创建状态:迁移 ===
==========================================================-- create_table(:状态)
-> 0.0010s
耙子中止了!
发生错误,此迁移和所有后续迁移均已取消:

未初始化的常量 创建状态::状态
/Users/jondoe/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/gems/1.8/gems/rspec-core-2.5.1/lib/rspec/core/backward_compatibility.rb:20:in 'const_missing'

===

=====

似乎这应该能够做到这一点:
http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

我还尝试创建一个模型,而不仅仅是一个迁移文件。还是同样的错误。我还尝试创建 2 个迁移(一个用于创建表,然后一个用于添加数据),但也没有奏效。有什么想法吗?

尝试执行以下操作:

State.reset_column_information

在您的状态创建之前。

文档

你的代码可以完美地工作,除了你实际上没有State类。Rails 了解这个类的唯一方法是你在 app/models/state.rb 中将其定义为 Class State < ActiveRecord::Base...

与其运行自定义迁移,我建议运行以下代码行:

rails g model State name:string abbreviation:string

这将:

  1. 创建模型(和单元测试文件)
  2. 创建一个名为 20110508223913_create_states.rb 的迁移,它看起来与您上面尝试的迁移几乎相同。

然后,您需要做的就是添加State.create...行,您应该很高兴。

相关内容

  • 没有找到相关文章

最新更新