我正在使用 Rails 4+ MongoDB (mongoId) + money-rails gem 并拥有以下 2 个模型:
class MyModel
field :date, type: Date
field :amount, type: Money
..............
end
class OtherModel < MyModel
........
end
在控制器上,许可参数功能如下:
def my_model_params
base=[:field1, field2, :field3, :amount]
params.permit(:field11, :field22, :field33, :field44, other_model: base)
end
现在,amount 字段是 Money 类型,但在此之前它是一个 float 字段。使用 float,create 方法没有问题,但现在 :amount 字段的类型为 Money,我在日志文件中显示消息Unpermitted parameter: amount。当我想创建一个新的 OtherModel 对象时会发生这种情况:
OtherModel.create(field1: "aaa", field2: "bbb", field3: "ccc", :amount=>Money.new(12345))
我尝试了几种定义 my_model_params 方法的方法,以便它接受金额字段,包括我在 StackOverflow 找到的所有与此相关的选项,但我一直收到相同的错误。我发现完成这项工作的唯一方法是使用许可!
def my_model_params
base=[:field1, field2, :field3, :amount]
params.permit!
end
之所以有效,是因为它允许所有字段,但显然不是批量分配保护的好选择。
在 params 的哈希值上,由于 money-rails gem,amount 字段如下所示:
"amount"=>#<Money fractional:12345 currency:USD>
有没有人发现类似的问题或知道如何声明金额字段?
谢谢!马可