2013-07-13 34 views
0

我有一個表Mnt_Items,用於存儲在last_mnt中完成的上次維護的日期。此外,該表還存儲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

是不是我submtted rails代碼? – Dajoh

+0

我可以問你,如果我想要將硬編碼的「20」替換爲mnt_frequence,我該如何實現它? – Dajoh

+0

我的意思是,讓rails處理Date對象到SQL查詢格式的轉換。我更新了示例以顯示如何傳遞值。另外,使用'scope'而不是'named_scope'。 – gylaz

相關問題