今回の変更を行ないたい背景
・heroku+clear dbの組み合わせで本番公開をしている施設検索のアプリケーションがあります。
・以下のようなclear dbの仕様により、施設テーブル(テーブル名:nurseries カラム名id・name・city_id)と市区町村テーブル(テーブル名:cities カラム名:id・city_name)が開発環境の通りheroku上で紐づかず難儀しています。
herokuでmysql(ClearDB)を使うとidが10ずつ増える
例:
開発環境で施設Aはid:2の千代田区と紐づくが、
そもままdeployすると施設Aの所在地がid:12の新宿区に変わってしまう。
実現しようとしていること
primary_keyを主キー以外に設定する方法があることを知り、
以下のような変更で上記事態を回避しようとしていますが、
このような方法最適なのかが不安で書きこませていただきました。
こういった場合の対処法として、以下のような対応で問題はないのでしょうか。
■cityテーブルにプライマリーキーにしたいカラム(primary_id)を新たに追加するmigrationファイルを作り実行する。
class AddPrimaryIdToCities < ActiveRecord::Migration[5.2] def change add_column :cities, :primary_id, :integer, comment: "主キー" end end
■cityクラスでprimary_idがプライマリーキーであると定義する
class City < ApplicationRecord has_many :nurseries # プライマリキーとして設定するカラム名を定義する self.primary_key = "primary_id" validates :primary_id, presence: true validates :primary_id, uniqueness: true end
<参考にした記事>
【Rails】id以外のカラムをプライマリキーに設定する方法
よろしければアドバイスのほどお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/26 11:21 編集
2020/01/26 11:39
2020/01/26 11:41
2020/01/26 14:01