2

表(days_of_weeks) 包含 8 列,其中一个是 id,其余列构成星期几 (sun,mon,tue ...),其中星期几为 0 或 1

我需要找到一周天数总和小于 3 的行。

作为一个 sql 语句,我可以写

select id  from days_of_week where (mon + tue + wed + thu + fri + sat + sun ) < 3;

我正在尝试从 rails 查询它

DaysOfWeek.select(:id).where((:sun + :tue + :wed + :thu + :fri + :sat + :sun) < 3)

它显示错误,因为它只是一个符号,我尝试了 .to_i ,但没有运气。

我知道我可以直接使用 rails 中的 sql 语句查询,但我想用 rails 来做吗?方法。

任何解决方案

4

2 回答 2

5

由于.whereActiveRecord中的子句中写String条件是很常见的,所以以下是否会被视为“sql语句”?

DaysOfWeek.select(:id).where('(mon + tue + wed + thu + fri + sat + sun ) < 3')
于 2013-06-21T07:00:15.303 回答
0

如果这是一个常用的查询,您可以添加一列,比如说total并使用回调保持更新。

可能像

before_save :update_total

def update_total
  self.total = mon + tue + wed + thu + fri + sat + sun
end
于 2013-06-21T10:33:30.333 回答