2016-04-25 7 views
1

Ich habe eine PDF-Anlage Boolean Flag in meiner Anwendung gesetzt und meine Datenbank zeigt es true festgelegt werden. Aber wenn mein Debugger lädt und ich die Variable überprüfe, zeigt es false immer an.Speicher vs Datenbank Unterschied in einem Variablenwert

Dies ist die sql generiert, wenn ich die Flagge holen.

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]] 

Dies ist, was ich für das obige Ergebnis verwendet:

products.first.attached_pdf 

Das in false führen immer. Ich weiß nicht, ob es die Daten aus dem Speicher-Cache holt oder was das für mich jetzt ziemlich ärgerlich macht. Warum unterscheiden sich die Speicher- und Datenbankwerte? Jede Hilfe wäre großartig!

+1

Sie müssen wahrscheinlich einige Code hinzufügen, um diese mehr verantwortlich. – jcm

+0

Können Sie genauer angeben, welchen Teil des Anwendungscodes ich veröffentlichen soll? – mhaseeb

+0

Meine Datenbank zeigt Änderungen, aber auf Anwendungsebene wird der boolesche Wert nicht aktualisiert. – mhaseeb

Antwort

1

Die Abfrageergebnisse stammen aus dem Datenbank-Abfrage-Cache (wie aus der Debug-Nachricht CACHE ersichtlich) und nicht aus der Datenbank. Wenn products eine Vereinigung von einem anderen Datensatz ist, dann können Sie auf force a real query der Daten aus der DB müssen:

products(true).first.attached_pdf