在这篇 SO 文章中,我可以看到如何向某个表添加默认值:
change_column :shops, :currency_id, :integer, :default => 1
我有另一个表货币,它有一个 ID 和一个 ISO_Name。我希望系统使用 EUR 作为默认值。但它可能有 ID 5 或 ID 1 或......
所以我的问题是:如何定义基于查询结果的默认值?例如 Currency.find_by_iso_code('EUR').id
在这篇 SO 文章中,我可以看到如何向某个表添加默认值:
change_column :shops, :currency_id, :integer, :default => 1
我有另一个表货币,它有一个 ID 和一个 ISO_Name。我希望系统使用 EUR 作为默认值。但它可能有 ID 5 或 ID 1 或......
所以我的问题是:如何定义基于查询结果的默认值?例如 Currency.find_by_iso_code('EUR').id
由于货币中有 iso_name 字段,您可以通过以下代码实现它。
change_column :shops, :currency_id, :integer, :default => Currency.find_by_iso_name('EUR').id
怎么样:
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