【发布时间】:2015-08-03 08:43:37
【问题描述】:
在我的 Rails 应用程序中,我在数据库中有三个模型/表(用户、注册人、事件)。当我遇到一个问题说它找不到事件表时,我正在设置一些 Capybara/RSpec 测试。
现在事件模型运行良好,我已经能够创建事件、进入 Rails 控制台并查询诸如 Events.all 或 Events.find(1) 之类的内容。让我困惑的是我的模式。我的架构有
create_table "registrations", force: true do |t|
t.string "first_name"
...
end
create_table "users", force: true do |t|
t.string "email", default: "", null: false
...
end
但是没有对事件表的引用。自从我为事件生成模型已经有一段时间了,但这里是迁移:
class CreateEvents < ActiveRecord::Migration
def change
create_table(:events) do |t|
t.string :name
t.string :location
t.timestamps
end
end
end
我已经运行了诸如 rake db:reset 和 rake db:migrate 之类的命令,以确保我的所有迁移都是最新的。任何想法为什么事件表不在架构中?
更新: 因此,我删除了数据库和架构,并开始一次迁移每个迁移。当我运行迁移以创建它时,事件表就在那里,但是在我运行以下命令后,该表从架构中消失了:
class AddingAssociationsToEventsUserModels < ActiveRecord::Migration
def change
add_column :events, :belongs_to, :user, index: true
end
end
这是正在运行的迁移:
rake db:migrate:redo VERSION=20150518132834
== 20150518132834 AddingAssociationsToEventsUserModels: migrating =============
-- add_column(:events, :belongs_to, :user, {:index=>true})
-> 0.0006s
== 20150518132834 AddingAssociationsToEventsUserModels: migrated (0.0006s) ====
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 rails-migrations