shagymoe
2008-Nov-24 22:21 UTC
attachment_fu - uploading from different models in the same action
Hi,
I''ve got a situation where I want to upload a zip file and an image
from the same form. Each attachment is a different model. So, here''s
what I''ve got.
Models:
class LogoImage < ActiveRecord::Base
belongs_to :company
has_attachment :max_size => 1.megabytes,
:storage => :s3,
:s3_config_path => (RAILS_ROOT + ''/config/
companies_s3.yml''),
:content_type => :image,
:thumbnails => { :large => ''96x96>''
,
:medium => ''64x64>'' ,
:small => ''48x48>''},
:processor => :MiniMagick
validates_as_attachment
end
class ZipFile < ActiveRecord::Base
belongs_to :apps
has_attachment :max_size => 1.megabytes,
:storage => :s3,
:s3_config_path => (RAILS_ROOT + ''/config/
apps_s3.yml''),
:content_type => :image,
:thumbnails => { :large => ''96x96>''
,
:medium => ''64x64>'' ,
:small => ''48x48>''},
:processor => :MiniMagick
validates_as_attachment
end
class App < ActiveRecord::Base
has_one :zip_file
belongs_to :companies
end
class Company < ActiveRecord::Base
has_one :logo_image
has_one :app
end
#### View #####
<%= error_messages_for :company %>
<%= error_messages_for :app %>
<%= error_messages_for :zip_file %>
<%= error_messages_for :logo_image %>
<% form_tag({:action => "new_app"}, { :multipart=>true }) do
-%>
<%= file_field_tag "zip_file" %>
<%= file_field_tag "logo_image" %>
<% end %>
### CONTROLLER ####
def new_app
@app = params[:id].nil? ? App.new : App.find(params[:id])
@company = Company.new(params[:company])
@zip_file = ZipFile.new(:uploaded_data => params[:zip_file])
@logo_image = LogoImage.new(:uploaded_data => params[:logo_image])
if request.post?
@app.attributes = params[:app]
@company.attributes = params[:company]
App.transaction do
@company.save!
@logo_image.company_id = @company.id
@logo_image.save!
@app.company_id = @company.id
@app.save!
@zip_file.app_id = @app.id
@zip_file.save!
end
end
end
## config files ##
apps_s3.yml
development:
bucket_name: apps_development
access_key_id: id
secret_access_key: key
companies_3.yml
development:
bucket_name: companies_development
access_key_id: id
secret_access_key: key
################3
Of course, there is a lot more info in there, but I tried to condense
it. The issue is that everything is getting saved, but the logo image
is getting saved in the same bucket as the zip file. It seems that
attachment_fu is just taking the bucket from the last attachment saved
and putting them both there. Either this is a bug or I''m doing
something wrong or it isn''t meant to do what I''m trying to do.
Any ideas?
Thanks.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---