2013-06-21 3 views
1

테이블 (days_of_weeks)은 8 개의 열을 포함하고 하나는 id이고 rest는 요일 (일, 월, 화 ...)을 구성하며 요일은 0 또는 1을 유지합니다.내부의 수학 연산

내가 내가 내가 레일에서를 조회하기 위해 노력하고있어

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

을 작성할 수 있습니다 누구의 요일의 합은 SQL 문 미만 3.

입니다 행을 찾을 필요가

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

그것은 단지 심볼이기 때문에 오류를 보여줍니다. 나는 .to_i를 시도했지만 운이 없었습니다.

레일즈에서 SQL 문으로 직접 질의 할 수 있다는 것을 알고 있지만 레일스로하고 싶습니다. 방법.

모든 솔루션

답변

3

는 액티브에 .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 
처럼 될 수 있을까