我的'Message'控制器中的'create'功能是这样的:
def create
@message = Message.new(params[:message])
@message2 = Message.new(params[:message])
@message.sender_deleted = false
@message2.sender_deleted = true
if @message2.save
...
else
logger.debug("SAVE DIDN'T WORK")
无论出于何种原因,都无法保存message2,但@message可以保存。我相信这是因为你只需要保存一个名为@message的变量,但我无法弄清楚如何解决这个问题。我需要在这个保存中将多个内容保存到数据库中 - 还有其他方法可以做到这一点,还是我完全错了?
感谢您的帮助
答案 0 :(得分:3)
没有理由你不能在动作中多次保存,但为什么你想做这样的事情是值得商榷的。您需要将保存放在事务中,以便只在两个记录都有效时保存。保存失败时,save!
会引发异常。
def create
@message = Message.new(params[:message].merge(:sender_deleted=>false))
@message2 = Message.new(params[:message].merge(:sender_deleted=>true))
Message.transaction do
@message.save!
@message2.save!
end
redirect_to .... # handle success here
rescue ActiveRecord::RecordNotSaved, ActiveRecord::RecordInvalid
# do what you need to deal with failed save here,
# e.g., set flash, log, etc.
render :action => :new
end
end