2013-07-13 3 views
0

last_mnt에서 마지막 유지 관리 날짜를 저장하는 테이블 Mnt_Items가 있습니다. 또한 테이블은 유지 보수 사이의 일 수를 mnt_frequence에 저장합니다. 나는 유지하는 데 필요한 모든 항목을 제시하는 뷰를 만들고 싶어하지만 오류를 얻을 :조건에서 날짜의 서식을 지정하는 방법

SQLite3::SQLException: near "23": syntax error: SELECT "mnt_items".* FROM "mnt_items" WHERE (last_mnt > 2013-06-22 23:58:41 UTC) 

다음과 같이 내 모델과 컨트롤러는 다음과 같습니다

class MntItem < ActiveRecord::Base 
    named_scope :needs_maintain, :conditions => "last_mnt > " + -20.days.from_now.to_s 
end 

class MntItemsController < ApplicationController 
    def index 
    @mnt_items = MntItem.needs_maintain 

    respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @mnt_items } 
    end 
end 

어떤 제안이 무엇인지가 원인 오류 또는 어떻게 달성 할 수 있습니까?

+0

당신은 작은 따옴표 (') 내부의 날짜 값을 둘러싸는 시도? – Ma3x

+0

Gylaz가 해결책을 제시했습니다. 감사합니다 – Dajoh

답변

0

하자 레일은 당신을 위해 작업을 수행합니다

scope :needs_maintain, -> (day_count) { where('last_mnt > ?', day_count.days.from_now) } 

그런 다음 호출 :

MntItem.needs_maintain(20) 
+0

내가 제출 한 레일 코드 아니 었나요? – Dajoh

+0

하드 코딩 된 "20"을 mnt_frequence로 바꾸려면 어떻게해야합니까? 어떻게 구현할 수 있습니까? – Dajoh

+0

필자는 레일즈가 Date 객체를 SQL 쿼리 형식으로 변환하는 것을 처리하도록했습니다. 예제를 업데이트하여 값을 전달하는 방법을 보여주었습니다. 또한'named_scope' 대신'scope'을 사용하십시오. – gylaz

관련 문제