Комментарий Заббы прав на деньги.Метод available_timeslots возвращает массив, и вы сначала вызываете метод для этого, но это не то же самое, что сначала вызов метода для объекта, который возвращает ассоциация Rails.
Я думаю, вы хотите использоватьприцелы.Поэтому удалите ваш метод available_timeslots и добавьте его в свой класс Timeslot:
scope :available, where(:available => true)
, затем в своем методе earliest_slot вы можете сделать
self.timeslots.available.first(:order => :starting_date)
, и он вернет первый доступный временной интервал для курсаобозначается как «self».
(Примечание: я предполагаю, что «available» - логическое значение. Если это что-то другое, измените условие where в области видимости соответствующим образом.)