1

この SO 記事では、特定のテーブルにデフォルト値を追加する方法を確認できます。

移行によって列にデフォルト値を追加する

change_column :shops, :currency_id, :integer, :default => 1

ID と ISO_Name を持つ別のテーブル通貨があります。システムがデフォルト値として EUR を使用するようにします。しかし、これが ID 5 または ID 1 または ... を持っている可能性があります。

私の質問: クエリの結果に基づくデフォルト値を定義するにはどうすればよいですか? たとえば、Currency.find_by_iso_code('EUR').id などです。

4

2 に答える 2

0

どうですか:

class SetDefaultCurrencyForShops < ActiveRecord::Migration
  def up
    currency = Currency.find_by_iso_code('EUR')
    if currency
      change_column :shops, :currency_id, :integer, :default => currency.id
    end
  end
end
于 2013-06-27T08:42:14.260 に答える