我的Task模型中有一些方法可以检查任务是否完整,过期或已完成。逾期和完成工作正常,但不完整的任务根本不会显示在我看来。如果我在rails控制台中运行Task.incomplete,则会返回未完成的任务。
型号:
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
查看:
- @current_agency.tasks.incomplete.each do |task|
= form_for task do |f|
%tr
%td
= f.check_box :completed, :class => "taskCheckbox"
%td
= link_to task.name, '/tasks/'+task.id.to_s+'/edit'
%td
= task.due_at.to_date.strftime( "%m-%d-%Y" ) if task.due_at.present?
%td
= task.assigned_to if task.assigned_to.present?
= submit_tag 'Save', class: 'pull-right btn btn-sm btn-primary', :style => 'display:none;'
答案 0 :(得分:0)
请将您的不完整方法更改为:
def self.incomplete
where("tasks.completed IS NULL or tasks.completed = false")
end
这样一项任务完成xor任务不完整。当完成为零时,以及当一个不完整的任务due_at&gt; = Time.now时,这可能有效。
编辑:添加table_name,添加NULL
答案 1 :(得分:0)
问题在于“完成”属性的值为零的任务。我运行了迁移以添加默认值=&gt;假完成了,现在好了。