2016-12-04 94 views
0

我有目前有以下列join_tableRails的:添加外键约束

 - id 
    - table_a_id 
    - table_b_id 

试图将外键约束添加到join_tabletable_a_id,我产生了以下迁移:

class AddTableIdForeignKeyConstraintToJoinTable < ActiveRecord::Migration[5.0] 
     def change 
     add_foreign_key :table_a, :join_table, column: :table_a_id, primary_key: "lng_id" 
     end 
    end 

错误

PG::UndefinedColumn: ERROR: column "question_id" referenced in 
    foreign key constraint does not exist 
    : ALTER TABLE "table_a" ADD CONSTRAINT 
     "fk_rails_4b0148d527" 
     FOREIGN KEY ("question_id") 
     REFERENCES "join_table" ("lng_id") 

问题
这行是什么意思foreign key constraint does not exist? Rails在哪里寻找foreign key

+0

您是否得到了解决您的问题的任何解决方案? – dp7

+0

尚未@dkp。我得到了最初的错误消失,但我对如何参考工作感到困惑。例如:现在我正尝试为'table_b'向连接表添加一个外键约束,并获得关于“join_table”关系的约束“fk_rails_ff820b2696”已经存在的错误。这意味着'add_foreign_key'这个方法并没有做到我想的那样。所以现在正在努力理解。 – Uzzar

回答

1

什么错误的意思是,有表table_a没有列question_id。您将添加外键到(join_table)的表应该是第一个参数,并且主键应该指向idtable_a

0

根据add_foreign_key,第一个参数应该是外键存在的表,第二个参数应该是表名,其中存在相应的主键。

而且,你的错误表明外键不存在它应该在的地方。

尝试改变迁移到这一点:

def change 
    add_foreign_key :join_table, :table_a, column: :table_a_id, primary_key: "lng_id" 
end