tha*_*ake 5 ruby ruby-on-rails ruby-on-rails-5
(Rails是5.0.0版,Ruby 2.3.0p0)
我想在Users表和Cards表之间创建一个关联.我已添加belongs_to :user到Cards模型和has_many :cardsUsers模型,并创建了一个迁移:
class AddUserIdToCard < ActiveRecord::Migration[5.0]
def change
add_foreign_key :cards, :users, column: :user_id
end
end
Run Code Online (Sandbox Code Playgroud)
当我跑rake db:migrate,我收到错误:
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column "user_id" referenced in foreign key constraint does not exist
: ALTER TABLE "cards" ADD CONSTRAINT "fk_rails_8ef7749967"
FOREIGN KEY ("user_id")
REFERENCES "users" ("id")
Run Code Online (Sandbox Code Playgroud)
现在我最初只是通过添加add_column :cards, :user_id, :integer到迁移来解决这个问题,但这看起来并不是很整洁,我担心以后会出现问题.有没有更好的方法来实现这一目标?
cards您正在为带有列的表设置外键user_id。但您还没有创建参考。创建引用,然后添加外键以保持引用完整性。回滚并修改您的迁移
1 class AddUserIdToCard < ActiveRecord::Migration[5.0]
2 def change
3 add_reference :cards, :users, index:true
4 add_foreign_key :cards, :users
5 end
6 end
Run Code Online (Sandbox Code Playgroud)
第 3 行将在表中创建对表中cards的引用(通过在 中创建列)。idusersuser_idcards
user_id第 4 行将在数据库级别添加外键约束。
有关更多信息,请阅读在 Rails 4 中添加参考列迁移
| 归档时间: |
|
| 查看次数: |
3408 次 |
| 最近记录: |