Проверка модели Rails на: символ для даты - PullRequest
1 голос
/ 28 января 2010

Я пытаюсь сравнить пару дат из моей формы.

Я моя проверка У меня есть что-то вроде:

:mydate - 1.day

Но я получаю:

undefined method `-' for :mydate:Symbol"

Абсолютно новый вопрос, но я не могу его понять. LOL - как мне выполнить математику даты для символа?

Edit:

ОК, поэтому я не могу получить доступ к параметрам из контроллера или из объекта формы. Я использую базовые контроллеры restful:

def create

 @booking = Booking.new(params[:booking])

 etc...
end

и затем в моей модели я хочу проверить некоторые даты - конечный результат должен состоять в том, что дата регистрации должна совпадать с датой проверки минус количество ночей

Итак, моя модель:

class Booking < ActiveRecord::Base

  def validate   
    errors.add_to_base "Nights Borked" if :checkin != (:checkout - :nights.day)
  end
end

Или я хотел бы сделать что-то подобное, но не могу.

Если я попытаюсь получить доступ к @ booking.checkin, я получу:

неопределенный метод `checkin '

Если я попытаюсь сделать

@foo = params[:booking][:checkin]

Я получаю

undefined local variable or method `params' for #<Class:0x103fd1408>

Что мне здесь не хватает. Что-то очевидное, вероятно, LOL:)

1 Ответ

3 голосов
/ 28 января 2010

Вы не можете выполнять математику даты на символе, потому что символ - это просто более сложная строка. Это не будет содержать значение, кроме его имени. Но при условии, что у вас есть модель с атрибутом mydate:

@object.mydate - 1.day

или если у вас есть параметр, переданный из формы:

params[:mydate] - 1.day

Учитывая ваши обновленные примеры кода, вы хотите назвать атрибуты как self.attribute, например:

class Booking < ActiveRecord::Base

  def validate   
    errors.add_to_base "Nights Borked" if self.checkin != (self.checkout - self.nights.day)
  end
end

Метод validate уже вызывается для объекта бронирования, поэтому вы хотите вызвать атрибуты в этом контексте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...