不完整任务失败的Rails模型方法

时间:2014-10-28 15:50:17

标签: ruby-on-rails activerecord view model form-for

我的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;'  

2 个答案:

答案 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;假完成了,现在好了。