2013-09-02 2 views
0

레일즈 3.2를 사용하고 있습니다. 내 개발 상자가 SQLite3을 사용하고 있으며 프로덕션 호스트가 MySQL을 사용하고 있습니다. Rails SQLite ActiveRecord 커넥터는 부울을 1 또는 0으로 저장하지 않고 't'또는 'f'로만 저장합니다. 물론 DB 중립적 인 코드를 원하지만 다음과 같은 방법으로는 찾을 수 없습니다. 나는 사용자 모델과 시프트 모델을 가지고있다. 이 쿼리에서는 모든 교대 (작업 일정)가 필요하며 관련 테이블을 기준으로 결과를 정렬하고 부울 조건을 적용해야합니다.레일스 SQLite 대 MySQL 부울

@sh= Shift.find(:all, :include=>:user, :order=>'users.rating DESC', :conditions=>["a1=1 or a1='t'"]) 

나는 또한 액티브 :: Base.connection.quoted_true 및 quoted_false에 대해 배웠습니다. 나는 그것들을 바꿀 수 있다고 생각하지만 그것도 이식성이없는 것으로 보이고 내가 업그레이드하면 자동으로 무시 될 것이다.

나는 1과 't'(또는 0과 'f')를 테스트하고 싶지 않습니다. 내 dev 환경을 mysql로 ​​변경하는 것 외에 이것을 수행하는 방법이 있습니까?

답변

1

당신은 조건으로 다음을 통과 할 수 있어야한다 :

:conditions => [["a1 = ?", true]]