2016-04-03 4 views
0

mevcuttur:Raylar işlev Nil verir ama veritabanı girdileri bu işlevi var

def lessenActive 
    Lesson.where("start_date < ? AND active = ?", DateTime.now,Nil).update_all(active: true) 
end 

o Nil döner .. Ama çünkü veritabanında severall girişleri neden anlayamıyorum. SQL kullanmanızı gerektirir

kullanma Raylar 4,2

+0

"active =?" Yerine "active IS?" Işlevini deneyin. – james00794

+0

Ben 'nil' hakkında seçici görünüyor gibi deneyimlerinden biliyorum. Belki de bu sorunun cevabı size yardımcı olacaktır: http://stackoverflow.com/questions/6678723/rails-where-condition-with-nil-value – februaryInk

cevap

2
Lesson.where("start_date < ? AND active IS NULL", DateTime.now).update_all(active: true) 

yorum önermek olarak da "active IS ?", nil kullanabilirsiniz, NULL denetlemek için yerine of = IS.

+1

Sorunuzun OP'nin sorgusundan nasıl farklı olduğunu açıklayarak bu cevabı büyük ölçüde artırabilirsiniz. Birisinin bir kavramı anlamasına yardım etmek, bir cevabı beslemek için kaşıktan daha yararlıdır. – MarsAtomic