奇怪的数据播种错误

时间:2014-06-25 17:35:28

标签: ruby-on-rails ruby decimal

我有一个名为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)

1 个答案:

答案 0 :(得分:1)

ActiveRecord中的奇怪值关联错误通常是由名称冲突引起的。 ActiveRecord为模型的数据库表中的所有字段定义setter和getter方法,ruby允许您以静默方式覆盖类定义中的那些。

确保不要使用保留字作为列名(经典候选人是'type','object','class'),而不是将列调用为关联对象,最后不要定义与数据库中的列同名的方法。

在您的情况下,请检查您是否在模型定义中定义了名为total的方法。