【发布时间】:2012-12-10 21:03:35
【问题描述】:
我在使用 rails 中的 .where 语句时遇到了一些问题。有人可以帮忙吗?
<% due_late = project.tasks.where(":date_due < ?", Date.today).count %>
【问题讨论】:
标签: sql ruby-on-rails ruby where
我在使用 rails 中的 .where 语句时遇到了一些问题。有人可以帮忙吗?
<% due_late = project.tasks.where(":date_due < ?", Date.today).count %>
【问题讨论】:
标签: sql ruby-on-rails ruby where
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 %>
【讨论】:
project 是您的 Project 类的一个实例)。