0

레일 5와 포스트 그레스 9.4를 사용하고 있습니다. 나는 두 테이블을 참조 할 수있는 두 개의 컬럼을 가지고 있습니다. 다른 테이블은 "encrypted_fields"라고합니다. 내 열 이름을 "enc_field1_encrypted_field_id"및 "enc_field2_encrypted_field_id"로 지정하고 싶습니다. 나는이 마이그레이션동일한 테이블을 참조하는 두 개의 열이있는 마이그레이션은 어떻게 만듭니 까?

class MySecureInfo < ActiveRecord::Migration[5.0] 
    def change 
    create_table :secure_accounts do |t| 
     t.references :encrypted_field, :enc_field1_encrypted_field_id, index: true, foreign_key: true 
     t.references :encrypted_field, :enc_field2_encrypted_field_id, index: true, foreign_key: true 
    end 
    end 
end 

을 시도하지만

PG::UndefinedTable: ERROR: relation "enc_field1s" does not exist 

가 어떻게 오류를 방지하기 위해 내 이동을 조절 않는 아래의 오류 불면?

+0

가 보이는 당신이 오타 ('encryptd_field')를 가지고있는 것처럼? 네 문제는 아니지만 뛰어 내렸을거야. – jvillian

+0

전화하세요. 오타를 바로 잡았으나 오류가 남아 있습니다. – Dave

+0

그 점이 보이지 않습니다. 열의 참조 유형은 모델을 다른 모델에 연결하는 데 사용됩니다. 그 일을 두 번 할 필요가 없습니다. 'enc_field1_encrypted_field_id'와'enc_field2_encrypted_field_id'는 모두 다른 테이블'encrypted_field'로부터 레코드의 같은 키를 가지고 있습니다. 여기 조금 할 수 있겠 니? – Maxence

답변

0

이 이후 레일 5에서 작동합니다 :

class MySecureInfo < ActiveRecord::Migration[5.0] 
    def change 
    create_table :secure_accounts do |t| 
     t.references :enc_field1_encrypted_field, index: true, foreign_key: { to_table: :encrypted_fields } 
     t.references :enc_field2_encrypted_field, index: true, foreign_key: { to_table: :encrypted_fields } 
    end 
    end 
end 
관련 문제