0

我在使用 rails 中的 .where 语句时遇到了一些问题。有人可以帮忙吗?

<% due_late = project.tasks.where(":date_due < ?", Date.today).count %>
4

1 回答 1

4

date_due在这种情况下,是数据库中定义的列名,而不是 Ruby 符号:date_due

<% due_late = project.tasks.where("date_due < ?", Date.today).count %>
#---------------------------------^^

评论后更新

JOIN如果两个表具有相同的列名,则需要在查询中区分表名:

# Assuming it is tasks.date_due you are testing, rather than phases.date_due
<% due_late = project.tasks.where("tasks.date_due < ?", Date.today).count %>

作为建议,与其在视图 .erb 文件中执行此计算,不如在模型中创建一个返回值的方法。

def due_late
  tasks.where("tasks.date_due < ?", Date.today).count
end

在视图中称为

<%= project.due_late %>
于 2012-12-10T21:07:03.047 回答