2016-12-04 89 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