ruby-on-rails - Ruby datetime 属性值未保存在 SQLite DB 中

标签 ruby-on-rails ruby sqlite datetime

我正在尝试将具有“sale_price”(浮点数)和“order_date”(日期时间)属性的订单对象保存到 SQLite 数据库中。日志中的所有内容看起来好像为每个 Order 对象正确保存了两种属性类型。但是,当我检查数据库时,所有 Order 对象的“order_date”属性都为零。这是代码:

response["orders"].each do |n|

        balance = n["balance"]

        sale_price = balance.to_f

        order_date = n["created_date"]

        order = Order.new(sale_price: sale_price, order_date: order_date)

        if Order.where(order_date: order_date).exists?

            puts "That order already exists in the DB"

        else

            if (order.sale_price || order.order_date) != nil 

                order.save

            else
                p "The sale price is nil"
            end

        end     

    end

以下是日志中的示例事务:
    Order Exists (0.9ms)  SELECT 1 AS one FROM "orders" WHERE "orders"."order_date" = '2013-12-06T15:53:36.424Z' LIMIT 1
   (0.1ms)  begin transaction
  SQL (0.5ms)  INSERT INTO "orders" ("created_at", "order_date", "sale_price", "updated_at") VALUES (?, ?, ?, ?)  [["created_at", Tue, 27 May 2014 22:59:02 UTC +00:00], ["order_date", Fri, 06 Dec 2013 15:53:36 UTC +00:00], ["sale_price", 20548.0], ["updated_at", Tue, 27 May 2014 22:59:02 UTC +00:00]]
   (3.1ms)  commit transaction

有什么想法吗?

最佳答案

(来自@dougiebuckets 回答中提到的John W)我认为最有可能发生的事情(以及为什么删除您的sqlite db 文件有效)是您正在查看创建的第一条记录。由于您在以后的迁移中将 order_date 字段添加到 Order 中,因此这些第一条记录的 order_date 将具有 nil 值,因为该字段在创建时不存在。

我也作弊,因为我可以访问@dougiebuckets 源代码。 :) 但这是我的第一个 SO 答案,所以让我放松一下。 :D

关于ruby-on-rails - Ruby datetime 属性值未保存在 SQLite DB 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23901147/

相关文章:

css - 样式文本数据库输出

android SQLite 没有这样的表(代码 1)错误

RSQLite;是否可以从数据框中更新表格?

jquery - 如何使用 jquery 按钮单击呈现特定页面模板

ruby-on-rails - 使用 MiniTest 检查模型上的方法调用

ruby-on-rails - Ohm & Redis : when to use set, 列表或集合?

android - sqlite 求和来自同一日期的值并返回 1 行

ruby-on-rails - 博客文章的简单模型

ruby-on-rails - 比较ruby中两个相似的哈希值

css - 为什么保存 .scss 文件会在 Rails 4 中创建一个 .css 文件?