Ruby on rails 不完全任务失败的Rails模型方法

Ruby on rails 不完全任务失败的Rails模型方法,ruby-on-rails,activerecord,view,model,form-for,Ruby On Rails,Activerecord,View,Model,Form For,在我的任务模型中,我有一些方法来检查任务是否不完整、过期或已完成。逾期未完成的工作很好,但不完整的任务根本不会出现在我的视野中。如果在rails控制台中运行Task.complete,则返回未完成的任务 型号: class Task < ActiveRecord::Base belongs_to :agency validates :name, presence: true def self.overdue where("due_at < ? AND completed

在我的任务模型中,我有一些方法来检查任务是否不完整、过期或已完成。逾期未完成的工作很好,但不完整的任务根本不会出现在我的视野中。如果在rails控制台中运行Task.complete,则返回未完成的任务

型号:

class Task < ActiveRecord::Base

belongs_to  :agency
validates :name, presence: true

def self.overdue
    where("due_at < ? AND completed = ?", Time.zone.now, false)
end

def self.incomplete
    where("due_at >= ? AND completed = ?", Time.zone.now, false)
end

def self.completed
    where("completed = true")
end

end

请将不完整的方法更改为:

def self.incomplete
  where("tasks.completed IS NULL or tasks.completed = false")
end
通过这种方式,任务完成或任务不完整。当completed为nil时,以及当不完整的任务在>=Time.now到期时,这可能会起作用


编辑:添加表\u名称,添加NULL

问题在于任务的completed属性值为nil。我运行了一个迁移,为completed添加了一个default=>false,现在可以开始了。

如果直接对数据库运行查询,您会得到结果吗?是的,如果在rails控制台中运行方法,我会得到正确的结果:[87]prymain>Task.Complete Task Load 0.5ms选择任务。*从任务中到期时间>'2014-10-28 16:22:05.423169'=>[…解决了这个问题,问题在于已完成属性的值为零的任务。我运行了一次迁移,为已完成添加了默认值=>false,现在可以开始了。感谢您的帮助。Alejandro,我尝试了您的建议,但没有成功。我还尝试了:def self.completed wheredue\u at>=?and completed!=?,Time.zone.now,true endAlejandro,我明白了,问题在于任务的completed属性值为nil。我运行了一次迁移,为completed添加了一个default=>false,现在可以开始了。谢谢你的帮助。希望我能有所帮助。
def self.incomplete
  where("tasks.completed IS NULL or tasks.completed = false")
end