Как мне вычислить значение в модели, основанной на дочерних элементах этой модели в rails3?

#ruby-on-rails-3 #data-modeling

#ruby-on-rails-3 #моделирование данных

Вопрос:

Я новичок в rails и могу придумать несколько способов решения этой проблемы, но я бы хотел сделать это способом «rails». Моя проблема в том, что у меня есть model — exam — which :has_many questions. Я хотел бы написать функцию в модели экзамена, которая будет вычислять оценку за экзамен (и сохранять ее в модели экзамена). Для этого мне нужно прочитать данные из объектов вопроса, которые принадлежат экзамену.

Я был бы очень признателен за любые советы или ссылки на документацию.

Комментарии:

1. Недостаточно информации. Что такое оценка? Как вы хотите это посчитать?

Ответ №1:

Поскольку вы ничего не написали о своей структуре данных, давайте представим, что каждый ваш вопрос имеет логическое correct поле_got. И в вашем экзамене есть целочисленное total_score поле. Итак, после проверки следует подсчитать все вопросы с правильным ответом:

 class Exam < ActiveRecord::Base
  has_many :questions
  before_save :set_score

  def set_score
    total_score = questions.where(:correct => true).count
  end
end
  

Комментарии:

1. Спасибо fl00r. Это именно то, что я искал. Модель данных, о которой вы догадались, в значительной степени соответствует тому, что я делаю. Мне нравится идея сохранения результата с использованием метода before_save. Еще раз спасибо.