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

1

由于货币中有 iso_name 字段,您可以通过以下代码实现它。

change_column :shops, :currency_id, :integer, :default => Currency.find_by_iso_name('EUR').id 
于 2013-06-27T15:43:04.837 回答
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 回答