该应用程序具有现有表exchanges
和currencies
。这样
select id, name, currency_id from exchanges;
id | name | currency_id
----+------+-------------
1 | ASX | 1 (Australian Stock Exchange)
3 | LSE | 3 (London Stock Exchange)
4 | NYSE | 2 (New York Stock Exchange)
2 | AMEX | 2
和
select id, name from currencies;
id | name
----+------
1 | AUD (Australian Dollar)
2 | USD (U.S. Dollar)
3 | GBP (Great Britain Pound)
现在我希望允许使用给定base_currency(例如@user.currency_id == 1
)的用户进行货币转换。最初我想到了这几行的表格
exchange_rate table:
base_currency (currency_id), target_currency (currency_id), exchange_rate
e.g。如果您将澳元金额乘以0.8235
,则可以将澳元兑换成美元兑换成美元1, 2, 0.8235
如果我尝试使用名为exchange_rates
的两列创建表currency_id
,则迁移将失败。如果我为两个货币列中的一个使用另一个名称,当我尝试显示货币名称时会出现编译错误,例如@exchange_rate.base_currency.currency.name
给出错误,而@exchange_rate.currency.name
给出澳元/美元/英镑。
目前exchange_rate表如下
table "exchange_rates", force: true do |t|
t.integer "base_currency"
t.integer "currency_id"
t.float "exchange_rate"
t.datetime "created_at"
t.datetime "updated_at"
end
我是否更改了exchange_rate表的数据库名称,或者如何引用base_currency的交换。
答案 0 :(得分:1)
在ExchangeRate模型中使用外键定义关联
has_one :base_currency, foreign_key: 'base_currency', class_name: 'Currency'
has_one :currency
现在您可以像这样访问您的货币和基础货币
@exchange_rate.base_currency.name
@exchange_rate.currency.name