File_field throws exception when field is left blank

hi -

I’m adapting a file upload from the Agile book. I have two models,
Challenge and MediaFile. The form looks like this:

<%form_for :challenge, :url => {:action
=>:create}, :html=>{:multipart=>true} do |f|%>
<%fields_for :media_file do |m|%>
Please select a media file: <%=m.file_field :uploaded_data%>

The MediaFile model has a method defined ‘uploaded_data’

def uploaded_data=(picture_field)
name = base_part_of(picture_field.original_filename)
content_type = picture_field.content_type.chomp
data = picture_field.read
end

This works fine, unless the user doesn’t select a file for upload. In
this case, picture_field is a blank string, and the model has no
attribute original_filename, etc. So the exception is:

undefined local variable or method `original_filename’ for #<MediaFile:
0x574b3c8>

The question is, how do I detect when a user hasn’t selected a file
for upload, and gracefully add an error to the errors collection? I
wonder if this has something to do with having two models? Like I
said, it works just fine when the user selects a file.

Thanks for any help,
Dino

On 5/12/08, dino d. [email protected] wrote:

The question is, how do I detect when a user hasn’t selected a file
for upload, and gracefully add an error to the errors collection?

Rescue the exception and add an error to the model.

begin

put whatever explodes here

rescue
@foo.errors.add( :file, ‘oops’ )
end

http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_exceptions.html

http://api.rubyonrails.com/classes/ActiveResource/Errors.html#M000801


Greg D.
http://destiney.com/