我不确定我缺少什么 - 我最近将我的Product
类别从静态枚举变成了一个表格,所以我需要修改参考。
我将结合构建Tasks
表的众多迁移,我需要引用Product
表
class CreateTasks < ActiveRecord::Migration[5.1]
def change
create_table :tasks do |t|
t.string :task_name
t.text :comment
t.datetime :task_start_date
t.datetime :task_end_date
t.references :project
t.timestamps
end
end
end
class AddDocumentsToTasks < ActiveRecord::Migration[5.1]
def change
add_reference :tasks, :document, foreign_key: true
add_reference :tasks, :product, foreign_key: true
end
end
class AddClientIdToTasks < ActiveRecord::Migration[5.1]
def change
add_foreign_key :tasks, :client, foreign_key: true
end
end
现在换新模式(简化)
create_table "products", force: :cascade do |t|
t.string "product_name"
t.text "product_description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "client_id"
end
create_table "tasks", force: :cascade do |t|
t.string "task_name"
t.text "comment"
t.datetime "task_start_date"
t.datetime "task_end_date"
t.bigint "project_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "product"
t.bigint "document_id"
t.boolean "completed"
t.integer "client_id"
t.index ["document_id"], name: "index_tasks_on_document_id"
t.index ["project_id"], name: "index_tasks_on_project_id"
end
我实际上不知道任务文件夹中来自t.integer "product"
的地方。我看了一遍。
由于以下警告,它目前正在打破所有集成/播种:
ActiveRecord::AssociationTypeMismatch: Product(#69974683871240) expected, got 1 which is an instance of Integer(#13017840)
我认为这是非常简单的我缺少但是因为它是非常冗余的代码我不太清楚为什么它适用于文档/项目,而不是产品。
以防万一: 产品迁移
class CreateProducts < ActiveRecord::Migration[5.1]
def change
create_table :products do |t|
t.string :product_name
t.text :product_description
t.references :client
t.references :task
t.timestamps
end
end
端**
更新
在我完全明白为什么之前没有回答这个问题,但似乎我误解了rails db:reset
做了什么。一旦我逐步删除/创建/迁移/种子,就会启动整个数据库结构并启动新模式。
似乎db:reset只使用我的Schema.rb文件中的逻辑 。
答案 0 :(得分:0)
您的schema.rb
用作迁移的缓存。因此,如果您更改已迁移的迁移文件,则不会显示修改。您必须删除schema.rb
内容,然后重置数据库。