>> s = SaleItemArchive.find(118296)
=> #<SaleItemArchive id: 118296, sale_id: 60308, item_id: 19825, quantity: 40, p rice: 0.75, created_at: "1998-08-10 00:00:00", quantity_shipped: 0>
>> s.created_at
=> nil
>> s.attributes["created_at"]
=> Mon Aug 10 00:00:00 UTC 1998
>>
>> s.class.match_attribute_method?("created_at")
=> nil
>> s.class.generated_methods.include?("created_at")
=> false
>>
这是一个正常的例子。
>> s = SaleItemArchive.find(118297)
=> #<SaleItemArchive id: 118297, sale_id: 60309, item_id: 2931, quantity: 100, price: 0.07, created_at: "1998-08-10 00:00:00", quantity_shipped: 0>
>> s.created_at
=> Mon, 10 Aug 1998 00:00:00 PDT -07:00
>> s.attributes["created_at"]
=> Mon Aug 10 00:00:00 UTC 1998
我在数据库中的其他几十行上测试了它,这是整个数据库中唯一给我一个问题的行。这绝对没有意义。由于没有给出错误,我花了一段时间才弄清楚出了什么问题。有什么想法吗?
我尝试检查并且由于某种原因未创建属性方法。我试过用新行复制这个问题,编辑其他行等等。没什么。请帮忙。
答案 0 :(得分:0)
最有可能的情况是数据库中的行只是缺少行。该对象仍然响应created_at
方法(因为它不会抛出错误),因此唯一的解释是该行的列为空。