2013-07-13 3 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

Гилас дал мне решение. Спасибо – Dajoh

ответ

0

Пусть рельсы сделать работу для вас:

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

Затем вызовите его:

MntItem.needs_maintain(20) 
+0

Разве это не код rails, который я поместил? – Dajoh

+0

Могу ли я попросить вас, если я хочу, чтобы hardcoded «20» был заменен на mnt_frequence, как я мог его реализовать? – Dajoh

+0

Я имел в виду, пусть рельсы обрабатывают преобразование объекта Date в формат SQL-запроса. Я обновил этот пример, чтобы показать, как передать значение. Кроме того, используйте 'scope' вместо' named_scope'. – gylaz

Смежные вопросы