如何让Rails在DB中插入外键约束?

时间:2014-02-06 22:04:12

标签: ruby-on-rails ruby

我有一个名为MyModelA和MyModelB的ruby模型,如下所示

  class MyModelA < ActiveRecord::Base
    belongs_to :mymodelb

  class MyModelB < ActiveRecord::Base
    # Blah Blah Blah

当我使用rake db:create命令创建数据库时,我注意到MYMODELA表没有外键约束。我手动插入它:

    ALTER TABLE MYMODELA ADD FOREIGN KEY (MYMODELB_ID) REFERENCES MYMODELB(ID);

如何定义我的模型,以便自动创建此DB外键约束,而不必在以后手动添加它?

2 个答案:

答案 0 :(得分:1)

Rails没有提供迁移助手来添加foreign_key。但是你可以使用foreigner gem

您这样做是为了使用foreigner gem

添加foreign_key
  create_table :products do |t|
    t.string :name
    t.integer :factory_id
    t.foreign_key :factories
  end

答案 1 :(得分:-1)

生成迁移:

rails g migration AddmymodelbidToMyModelA mymodelb_id:integer

转到迁移文件并添加

add_index:mymodela,:mymodelb_id

恰好在两个结束条款之间

运行 rake:db:migrate