我为表orders
创建了一个新的迁移,并期望表用户使用外键user_id
。 Order:User=N:1
之间的关系。迁移文件是:
class CreateOrders < ActiveRecord::Migration
def change
create_table :orders do |t|
t.datetime :begin
t.integer :plan
t.boolean :activiated
t.timestamps null: false
end
add_foreign_key :orders, :users
end
end
完成rake db:migration后,我登录rails console:
2.1.10 :010 > Order.column_names
=> ["id", "begin", "plan", "activiated", "created_at", "updated_at"]
2.1.10 :011 > User.column_names
=> ["id", "name", "email", "created_at", "updated_at", "password_digest", ...]
但是我找不到user_id列。
我跟着3.6 Foreign Keys,其中说外键应该在那里。有什么我想念的吗?谢谢。
答案 0 :(得分:1)
就像它在指南中说的那样
add_foreign_key :articles, :authors
这会在文章的author_id列中添加一个新的外键 表
它在列上添加了外键约束,该列必须已经在表中。因此,您必须在迁移之前将其包括在内。
create_table :orders do |t|
t.datetime :begin
t.integer :user_id
t.integer :plan
t.boolean :activiated
t.timestamps null: false
end
add_foreign_key :orders, :users
答案 1 :(得分:0)
您只需运行rake db:rollback
,然后在早期的迁移文件中添加t.integer :user_id
并保存文件即可。
然后运行rake db:migrate
。希望这有助于在特定情况下解决您的问题。