Rails: добавить внешний ключ к первичному ключу нескольких столбцов - PullRequest
0 голосов
/ 18 мая 2019

У меня есть таблица обменных валют, у которых первичный ключ состоит из двух столбцов, от и до. Я хочу создать таблицу rate_history с внешним ключом для обменных валют.

Я попытался создать два внешних ключа для обоих упомянутых первичных ключей.

class CreateExchangeableCurrencies < ActiveRecord::Migration[5.2]
  def change
    create_table :exchangeable_currencies, primary_key: %i[from to] do |t|
      t.string :from
      t.string :to

      t.timestamps
    end
  end
end

class CreateRateHistories < ActiveRecord::Migration[5.2]
  def change
    create_table :rate_histories do |t|
      t.date :date
      t.float :rate
      t.string :from
      t.string :to
      t.timestamps
    end
  add_foreign_key :rate_histories, :exchangeable_currencies,
                column: :from, primary_key: :from, on_delete: 
  :cascade
 add_foreign_key :rate_histories, :exchangeable_currencies,
                column: :to, primary_key: :to, on_delete: :cascade
  end
end

Вот ошибка

Столбец to в таблице rate_histories не соответствует столбцу to в exchangeable_currencies, который имеет тип varchar(255). Чтобы решить эту проблему, измените тип столбца to на rate_histories на: string. (Например t.string :to).

1 Ответ

0 голосов
/ 20 мая 2019

Вместо использования какой-либо строки вы должны использовать код валюты для столбцов «от» и «до».

Затем назовите их как "from_currency_code" и "to_currency_code".

Затем пометьте эти "from_currency_code" и "to_currency_code", "ified_date_time "как объединенный уникальный ключ следующим образом.

add_index :currency_update, [:from_currency_code, :to_currency_code, :modified_date_time], :unique => true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...