1
を使用するようにRailsでデフォルト設定するのではなく、テーブルのカスタムプライマリキーproduct_code
を作成しようとしました。 products
テーブルはmetrics
テーブルとの間にhas_one
の関係がありますが、belongs_to
を指定して:product
を指定してマイグレーションを生成すると、データベースの外部キーはproduct_code
ではなくproduct_id
になります。移行を生成してmetrics
テーブルのforeign_key
をproduct_id
ではなくproduct_code
にするにはどうすればよいですか?Railsの移行でカスタム参照キー名を指定する
私は次の移行とモデルの関係を持っています。あなたが試すことができ
# Product migration
class CreateProducts < ActiveRecord::Migration
def change
create_table :products, id: false do |t|
t.string :product_code, null: false
t.timestamps null: false
end
add_index :products, :product_code, unique: true
end
end
# models/product.rb
class Product < ActiveRecord::Base
self.primary_key :product_code
has_one :metric
end
# Metric migration
class CreateMetrics < ActiveRecord::Migration
def change
create_table :metrics do |t|
t.belongs_to :product
t.string :department
t.timestamps null: false
end
end
end
# models/metric.rb
class Metric < ActiveRecord::Base
belongs_to :product
end