diff options
Diffstat (limited to 'app/controllers/file_request_controller.rb')
-rw-r--r-- | app/controllers/file_request_controller.rb | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/app/controllers/file_request_controller.rb b/app/controllers/file_request_controller.rb index ab9390a4f..2f2ae9b58 100644 --- a/app/controllers/file_request_controller.rb +++ b/app/controllers/file_request_controller.rb @@ -4,33 +4,40 @@ # Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: file_request_controller.rb,v 1.8 2007-09-12 15:56:18 francis Exp $ +# $Id: file_request_controller.rb,v 1.9 2007-09-17 10:13:24 francis Exp $ class FileRequestController < ApplicationController def index # render index.rhtml template end -# before_filter :check_authentication, :only => [:create] def create - # Create both FOI request and the first request message @info_request = InfoRequest.new(params[:info_request]) @outgoing_message = OutgoingMessage.new(params[:outgoing_message].merge({ :status => 'ready', :message_type => 'initial_request' })) + @info_request.outgoing_messages << @outgoing_message @outgoing_message.info_request = @info_request - # Save both models - valid = @info_request.valid? - valid &&= @outgoing_message.valid? # XXX maybe there is a nicer way of preventing lazy boolean evaluation than this - if valid - @info_request.save! - @outgoing_message.save! - else + # This automatically saves dependent objects, such as @info_request, in the same transaction + if not @info_request.save + raise @info_request.errors.@errors.to_yaml render :action => 'index' end + + # Save both models +# valid = @info_request.valid? +# valid &&= @outgoing_message.valid? # XXX maybe there is a nicer way of preventing lazy boolean evaluation than this +# if valid +# if check_authentication +# @info_request.save! +# @outgoing_message.save! +# end +# else +# render :action => 'index' +# end end end |