The Agile Development book uses the following code to turn a file name string into something that can be read as a file:
class Picture<ActiveRecord::Base def picture=(picture_field) self.name=base_part_of(picture_field.original_filename) self.content_type=picture_field.content_type.chomp self.data=picture_field.read end
def base_part_of(file_name) name=File.basename(file_name) name.gsub(/[^\w._-]/,'') end end
Can anyone explain what's going on here? Where is original_filename defined? Is there a less obscure way to perform a read on a filename that refers to a file on the visitor's disk?