2015-05-20 2 views
0

Я довольно новичок в рельсах.Сохранение повторяющихся итераций в базе данных

У меня есть несколько точек данных, которые я сохраняю в своей базе данных для темы под названием «защитник». Все эти точки данных добавляются вместе для значения «xoi_qb». Этот расчет выполняется в моей модели:

def xoi_qb 
    sum=0 
    sum+= passing_yards|| 0 
    sum+= passing_yards|| 0 
    sum+= qb_rushing|| 0 

Каждое значение будет меняться с течением времени, и поэтому в общей сложности на сумму, «xoi_qb», будет меняться с течением времени. В настоящее время общая сумма для «xoi_qb» только что обновляется, а предыдущая сумма теряется.

Что бы я хотел сделать, это сохранить каждую итерацию этой суммы каждый раз, когда она будет изменена. Я не хочу делать «задание cron», потому что я не хочу создавать расписание, основанное на времени, которое выполняет рейк, чтобы увидеть, были ли внесены какие-либо изменения ... Я просто хочу, чтобы общая сумма для каждого «защитника» значение «xoi_qb» для сохранения в базе данных каждый раз, что я делаю изменения.

Таким образом, каждый «защитник» будет иметь множество значений «xoi_qb», которые будут увеличиваться и уменьшаться. Прямо сейчас, я просто хочу решить это, а затем, в конце концов, я хотел бы построить данные в диаграмме (с Highcharts или что-то подобное). Но на данный момент мне просто нужно знать, как сохранить каждую общую сумму «xoi_qb» при каждом изменении.

Я понятия не имею, как это сделать.

+0

вам может понадобиться создать отдельную таблицу в вас базе данных для отслеживания ' xoi_qb', когда он обновляется. – bhanu

ответ

0

Вы можете использовать before_save обратный вызов в соответствующей модели с последующей обращающимся предыдущим значением, как _was

ли должен выглядеть примерно так:

before_save :store_last_xoi_qb 

def store_last_xoi_qb 
    last_xoi_qb = self.xoi_qb_was 
    # do your things 
end 
+0

Но как определить «xoi_qb_was»? Я получаю сообщение об ошибке 'undefined method' xoi_qb_was'' – cwayne2

+0

Его функция Rails. '_was ', добавленный к атрибуту, возвращает свое предыдущее значение. – shivam

+0

Хорошо ... почему, по-твоему, я получаю «неопределенную ошибку метода»? Похоже, что «last_xoi_qb» нужно будет определить, нет? (И большое спасибо за вашу помощь !!! Я должен быть близок) Может ли это из-за этого в контроллере? ... '@quarterback = QbPlayer.find (params [: id]) # Обновить объект , если @ quarterback.update_attributes (quarterback_params) # Если обновление выполнено успешно, перенаправление на действие индекса flash [: notice] = "Игрок обновлен успешно." redirect_to (: action => 'show',: id => @ quarterback.id) ' – cwayne2