I''m working on an app where a model can have different kinds of audio
attachments, in this case mp3 and m4a files. I want to distiguish
between them by content type. So I want mp3 files to have a content
type of audio/mpeg and m4a files a content type of audio/mp4, at first
I tried this:
class AudioFile < ActiveRecord::Base
has_attachment :storage => :file_system,
:max_size => 10.megabytes,
:processor => :none
def self.create_mp3!(attributes)
create!(attributes.merge(:content_type => "audio/mpeg"))
end
def self.create_mp3!(attributes)
create!(attributes.merge(:content_type => "audio/mpeg"))
end
end
where the attributes coming from a form included an uploaded_data value.
This DIDN''T work, the content type was ignored, I eventually tracked
this down to attachment_fu setting the content type from content_type
returned by the UploadedTempFile value of uploaded data which was
returning nil.
So right now, I''ve got this:
module MP3File
def content_type
''audio/mpeg''
end
end
module AACFile
def content_type
''audio/mp4''
end
end
def self.create_mp3!(attributes)
attributes[:uploaded_data].extend MP3File
create!(attributes.merge(:content_type => ''audio/mpeg''))
end
def self.create_aac!(attributes)
attributes[:uploaded_data].extend AACFile
create!(attributes.merge(:content_type => ''audio/mp4''))
end
Which ''duck punches'' the UploadedTempFile to return the right
value.
But this feels to me somehow wrong. Am I missing something in attachment_fu?
--
Rick DeNatale
My blog on Ruby
http://talklikeaduck.denhaven2.com/
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---