2015-05-07 2 views
2

У меня есть база данных с тремя значениями: tips_value, profile_value и value. Для каждой записи в базе данных, всякий раз, когда я обновляю запись, я хочу взять сумму tips_value и profile_value и назначить ее value, но она не работает.Ruby Update Атрибут с суммой атрибутов базы данных

Вот моя функция обновления:

def update 
    @affinity = Affinity.find(params[:id]) 

    if @affinity.update_attributes(params[:affinity]) 
     update_column(@affinity.value, @affinity.tips_value + @affinity.profile_value) 
     redirect_to @affinity 
    else 
     render 'edit' 
    end 
end 

Как я могу это сделать?

ответ

2

Было бы лучше сделать before_update, что будет заботиться об обновлении вашего value в БД, при смене tips_value или profile_value, и из любой точки мира.

В модели Affinity добавить

before_update :sync_value_amount 

private 

def sync_value_amount 
    self.value = self.tips_value + self.profile_value 
end 
+0

Он работал! Огромное спасибо. – user107680

0

Вы можете сделать before_update перезвонит в модели

Как:

before_update :set_value 

private 
    def set_value 
    self.value= @affinity.tips_value + @affinity.profile_value 
    end 
Смежные вопросы