В моем приложении есть класс Trans
(транзакция), который отправляет транзакцию на сервер.Когда транзакция отправляется, я также хочу обновить родительский класс User, чтобы обновить их кэшированный «баланс».Вот соответствующий код:
# tran.rb
class Tran < ActiveRecord::Base
belongs_to :submitting_user, :class_name => 'User'
end
И мой контроллер:
#trans_controller.rb
def create
@title = "Create Transaction"
# Add the transaction from the client
@tran = Tran.new(params[:tran])
# Update the current user
@tran.submitting_user_id = current_user.id
# ERROR: This line is not persisted
@tran.submitting_user.current_balance = 4;
# Save the transaction
if @tran.save
flash[:success] = 'Transaction was successfully created.'
redirect_to trans_path
У меня есть пара проблем:
- При обновлении поля current_balanceпользователь, этот баланс не сохраняется на пользователя после сохранения транзакции.Я думаю, может быть, мне нужно использовать
update_attributes
? - Я даже не уверен, что код должен быть частью моего контроллера - возможно, это имеет больше смысла в
before_save
моей модели? - Будет ли любой из них совершать эту транзакцию?