2013-06-21 24 views
1

表(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; 

我試圖從軌查詢它

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

它顯示錯誤,因爲它只是一個符號,我試圖.to_i,但沒有運氣。

我知道我可以直接使用來自rails的sql語句進行查詢,但是我想要這樣做嗎?辦法。

任何解決方案

回答

3

因爲它是常見的寫字符串條件中的ActiveRecord .where條款,將以下被視爲「SQL語句」?

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

如果這是一種常用的查詢,您可以添加一列,說total並使用一個回調保持更新。

也能像

before_save :update_total 

def update_total 
    self.total = mon + tue + wed + thu + fri + sat + sun 
end