内存与数据库在变量值中的差异

时间:2016-04-25 12:31:17

标签: ruby-on-rails

我在我的应用程序中设置了一个pdf附件布尔标志,我的数据库显示它被设置为true。但是当我的调试器加载并且我检查变量时,它总是显示false

这是我获取标志时生成的sql

CACHE (0.0ms)  SELECT  `spree_products`.* FROM `spree_products` INNER JOIN `spree_variants` ON `spree_products`.`id` = `spree_variants`.`product_id` INNER JOIN `spree_line_items` ON `spree_variants`.`id` = `spree_line_items`.`variant_id` WHERE `spree_products`.`deleted_at` IS NULL AND `spree_variants`.`deleted_at` IS NULL AND `spree_line_items`.`order_id` = 1070722790  ORDER BY spree_line_items.created_at ASC LIMIT 1  [["order_id", 1070722790]]

这是我用于上述结果的内容:

products.first.attached_pdf

这总是导致false。我不知道它是从内存缓存中提取数据还是什么,但这对我来说非常麻烦。为什么内存和数据库值不同?任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

查询结果来自数据库查询缓存(从CACHE调试消息中显而易见),而不是来自数据库。如果products是某个其他记录的关联,那么您可能需要force a real query来自db的数据:

products(true).first.attached_pdf