2016-04-03 13 views
0

用意されていますRailsの機能はnilを返しますが、データベースエントリは、私がこの機能を持っている

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

それはnilを返します..しかし、データベースにseverallエントリですので、私は理由を理解することはできません。 SQLを使用する必要があります

使用して、レール4.2

+0

「アクティブ=」の代わりに「アクティブなIS?」を試してください。 – james00794

+0

私は経験から、「どこで」は「無」であるかのように思われることを知っています。おそらく、この質問への回答は役に立ちます:http://stackoverflow.com/questions/6678723/rails-where-condition-with-nil-value – februaryInk

答えて

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

は、コメントが示唆するようあなたも"active IS ?", nilを使用することができ、NULLをチェックする代わりに=です。

+1

あなたの質問とOPの質問との違いを説明することで、この回答を大きく改善できます。誰かがコンセプトを理解するのを助けることは、スプーンが答えを与えることよりも有用です。 – MarsAtomic

関連する問題