0

私はRails 5とPostGres 9.4を使用しています。テーブルに2つの列があり、どちらも別のテーブルを参照します。もう一方のテーブルは "encrypted_fields"と呼ばれます。私は列に「enc_field1_encrypted_field_id」と「enc_field2_encrypted_field_id」と名前を付けたいと思います。私はこの移行に同じテーブルを参照する2つの列を持つ移行を作成するにはどうすればよいですか?

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

が見えますか?あなたの問題ではないかもしれませんが、飛び出しました。 – jvillian

+0

よろしくお願いします。入力ミスを修正しましたが、エラーは残ります。 – Dave

+0

私はポイントが表示されません。参照型の列は、モデルを別のモデルにリンクするために使用されます。これを2回行うことには意味がありません。 'enc_field1_encrypted_field_id'と' enc_field2_encrypted_field_id'は両方とも、もう一方のテーブル 'encrypted_field'からレコードの同じキーを保持します。あなたはここで少しを開発することができます – Maxence

答えて

0

これは、以降のRails 5で動作するはずです:あなたがタイプミス( `encryptd_field`)を持っているよう

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 
関連する問題