Вопрос

Я создаю приложение для когнитивных тестов в Rails.
У меня есть несколько тестов (Quiz объекты) для моих посетителей.На домашней странице я хочу показывать только те тесты, которые готовы к употреблению:у них должно быть несколько вопросов и несколько возможных ответов.
Конечно, я мог бы выполнить запрос с помощью SQL или создать метод класса, повторяющий попытку всех объектов, где Quiz.questions.size > 1 && Quiz.answer.size > 1.Тем не менее, я бы хотел более элегантный / абстрактный способ.
Есть ли способ запросить "готовый" метод, действующий так, как если бы это был метод ActiveRecord, чтобы я мог вызвать Quiz.find_all_by_ready(1) и положил ready в любом состоянии теста?Кэширование - это возможность, мне было интересно, есть ли динамическая альтернатива.Как бы гуру rails решил эту проблему?

Ваше здоровье,
Давиде

Это было полезно?

Решение

Используя комбинацию named_scope и counter_caches, вы могли бы сделать что-то вроде этого:

class Quiz < AR:B
    named_scope :ready, :conditions => ['quizes.questions_count > 0 AND quizes.answers_count > 0']
end

@quizes = Quiz.ready

Я надеюсь, что это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top