Если Вы не должны отображать общее количество страниц тогда, я не уверен, что Вам нужен запрос количества. Много сайтов включая Google не показывает общее количество на разбитых на страницы результатах. Вместо этого они просто говорят "затем>".
Я обычно использую has_many: through, но пробовали ли вы
student.classes.delete(science)
, я думаю, что необходимость иметь целевой объект, а не только идентификатор, является ограничение HABTM (поскольку для вашего удобства таблица соединений абстрагируется). Если вы используете has_many: through, вы можете работать непосредственно с таблицей соединения (поскольку у вас есть модель), и это позволяет вам оптимизировать подобные вещи для меньшего количества запросов.
def leave_class(class_id)
ClassMembership.delete(:all, :conditions => ["student_id = ? and class_id = ?", self.id, class_id)
end
Если вам нужна простота HABTM, вам нужно использовать
student.classes.delete(Class.find 2)
] Кроме того, называть модель «Класс» - действительно плохая идея. Используйте имя, не являющееся частью ядра Ruby!