Вычисляемое поле в RoR (действует как метод ActiveRecord) - PullRequest
1 голос
/ 06 октября 2009

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

Приветствия
Davide

1 Ответ

3 голосов
/ 06 октября 2009

Используя комбинацию 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

Надеюсь, это поможет!

...