从模型访问 cookie

Accessing cookies from model

我听说在 Rails 中尝试访问模型中的 cookie 是完全不可能的。

然而这是我的情况:

这是一款用于管理费用的小型应用程序。金额以欧元存储在数据库中,但用户可以设置不同的货币,以便以用户想要的货币显示金额。为此,我已经覆盖了金额属性 getter 和 setter,因此在获取和设置金额时应用汇率。

问题是我将用户选择的货币存储在 cookie 中,覆盖的 setter 和 getter 是在 Expense 模型中定义的,显然:

def quantity=(quantity)
    update_rates
    write_attribute(:quantity, @eu_bank.exchange(100*quantity.to_i, cookies[:currency], "EUR").cents)
end

def quantity
    update_rates
    c = read_attribute(:quantity)
    @eu_bank.exchange(c.to_i, "EUR", cookies[:currency]).cents/100.0
end

我该如何处理这种情况?

您可以在控制器中访问 c​​ookie,然后通过在控制器中调用类似 my_expences.set_exchange_rate(cookie[:exchange_rate]) 的方法将其立即传递给您的模型。