Rails 3: Фильтрация и проблема "не могу конвертировать хэш в целое число" - PullRequest
0 голосов
/ 13 мая 2011

У меня есть модель курса, которая имеет много временных интервалов.

В модели курсов у меня есть следующие методы:

def available_timeslots
  tsarray = []
  self.timeslots.map{ |t|
    if t.available then
      tsarray << t
    end
  }
  tsarray
end

def earliest_slot
  self.available_timeslots.first(:order => :starting_date)
end

Сейчас я пытаюсь получить самый ранний доступный интервал времени для каждого курса. Без фильтра доступности @ course.earliest_slot работает нормально. Но если я попытаюсь @ course.available_timeslots.earliest_slot возвращает сообщение «не могу преобразовать хэш в целое число».

Любые предложения приветствуются

1 Ответ

2 голосов
/ 13 мая 2011

Комментарий Заббы прав на деньги.Метод available_timeslots возвращает массив, и вы сначала вызываете метод для этого, но это не то же самое, что сначала вызов метода для объекта, который возвращает ассоциация Rails.

Я думаю, вы хотите использоватьприцелы.Поэтому удалите ваш метод available_timeslots и добавьте его в свой класс Timeslot:

scope :available, where(:available => true)

, затем в своем методе earliest_slot вы можете сделать

self.timeslots.available.first(:order => :starting_date)

, и он вернет первый доступный временной интервал для курсаобозначается как «self».

(Примечание: я предполагаю, что «available» - логическое значение. Если это что-то другое, измените условие where в области видимости соответствующим образом.)

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