İşe yaramaya çalışan raylar konsolunda oynuyorum, ve sorgularımdan birinin ne zaman geldiği zaman geri dönmeyi sürdürdüğünü fark ediyorum. t. Oluşturulan SQL sorgusuna baktığımda, her seferinde eklenmiş olan AND (1=0)
olduğunu fark ettim. Bu biraz sinir bozucu ve neden bunu yaptığından emin değilim.ActiveRecord, 'AND (1 = 0)' sorgusunun sonuna ekliyor
Not: Dökülebilir geminin kullanılması.
Yeniden oluşturma adımları:
2.1.2 :xxxx > @parent = Parent.take
Parent Load (38.1ms) SELECT `parents`.* FROM `parents` LIMIT 1
=> #<Parent id: 37, ...>
2.1.2 :xxxx > @child = Child.where(id: @parent.actable_id)
SQL (0.7ms) SELECT `childs`.`id` AS t0_r0, `childs`.`attribute` AS t0_r1, FROM `childs`
...
LEFT OUTER JOIN `parents` ON `parents`.`actable_id` = `childs`.`id` AND `parents`.`actable_type` = 'child type' WHERE `childs`.`id` = 20 AND (1=0)
=> #<ActiveRecord::Relation []>
neden oluyor (raylar konsolda tablolar bağlandıktan sonra)? Nasıl durdurabilirim? Eğer, değeri boş bir dizide bir sütun için sorguladığınızda
Ben Raylar bu sorgu için bunu yapar fark: 'User.where (: id => []) ', SQL SELECT * FROM kullanıcılarının NEREDE()' de yazamayacağından. Bu yüzden, bu yaklaşımın hiçbir şeyin geri dönmeyeceğini bildiği sorgular için gerekli olduğunu düşünüyorum, ancak SQL'de ifade edemez. – MaxGabriel
@MaxGabriel bu benim için cevaptı. Belki bunu sadece yorum yapmak yerine bir cevap olarak yorumlayabilir miyiz? – jgraft
@jgraft İyi fikir, önerdiğin gibi bir cevap verdim. – MaxGabriel