我一直在使用 sqlite(Rails 开发环境的默认设置)为事件(黑客马拉松)开发 Rails 4.0 应用程序,该应用程序具有父模型 Event,其中可以有许多 Press_Blurbs。
首先,我运行了一些脚手架生成器,这些生成器创建了一些我看似毫无问题地运行的迁移:
class CreateEvents < ActiveRecord::Migration
def change
create_table :events do |t|
t.string :city
t.string :theme
t.datetime :hackathon_start
t.datetime :hackathon_end
t.datetime :show_start
t.datetime :show_end
t.text :about
t.string :hack_rsvp_url
t.string :show_rsvp_url
t.timestamps
end
end
end
class CreatePressBlurbs < ActiveRecord::Migration
def change
create_table :press_blurbs do |t|
t.string :headline
t.string :source_name
t.string :source_url
t.string :logo_uri
t.timestamps
end
end
end
然后我在模型中添加了一些关系:
class Event < ActiveRecord::Base
has_many :press_blurbs
end
class PressBlurb < ActiveRecord::Base
belongs_to :event
end
...并添加/运行迁移以添加表引用:
class AddEventRefToPressBlurbs < ActiveRecord::Migration
def change
add_column :press_blurbs, :event, :reference
end
end
然而,当我查看 schema.db 时,这是我看到的,而不是表定义:
# Could not dump table "events" because of following NoMethodError
# undefined method `[]' for nil:NilClass
# Could not dump table "press_blurbs" because of following NoMethodError
# undefined method `[]' for nil:NilClass
其他不相关的表完美地显示在 schema.rb 中,但这些没有。知道发生了什么吗?