我有一个名为Order的类,其中包含字段total和commission_amount,它们都是小数。在seeds.rb文件中,我按原样分配了两个字段100.00
(没有引号)。当我进入rails控制台并输入Order.all时,我可以看到种子文件创建的订单的佣金金额为100.00
,但总数列为0.0
。
我尝试使用rails控制台为其分配不同的数字,总数和佣金金额都是precision: 10, scale: 2
的十进制属性。我已尝试使用BigDecimal构造函数在种子文件中分配值,并且我没有对total属性进行任何类型的验证。非常难过应该是一个微不足道的问题。谢谢你的帮助!
编辑:这是相关的代码示例
# the migration
class CreateOrders < ActiveRecord::Migration
def change
create_table :orders do |t|
# ...
t.decimal :total, precision: 10, scale: 2
t.decimal :commission_amount, precision: 10, scale: 2
end
end
end
# the seeds file
# Order SEEDING
# --------------
create_records([
{
# ...
total: 100.00,
commission_amount: 100.00
}
], Order)
答案 0 :(得分:1)
ActiveRecord中的奇怪值关联错误通常是由名称冲突引起的。 ActiveRecord为模型的数据库表中的所有字段定义setter和getter方法,ruby允许您以静默方式覆盖类定义中的那些。
确保不要使用保留字作为列名(经典候选人是'type','object','class'),而不是将列调用为关联对象,最后不要定义与数据库中的列同名的方法。
在您的情况下,请检查您是否在模型定义中定义了名为total
的方法。