Hi, I have a user and photo model where a user has one photo (using attachment_fu). I have copied my user actions for create and update below, and I was wondering if someone could suggest a better method. I''m just not sure this is the best way to do this... def create @user = User.new(params[:user]) #Create a new photo if the info is sent if !params[:photo][:uploaded_data].blank? @user.photo = Photo.create(params[:photo]) end @user.save! self.current_user = @user redirect_back_or_default(''/'') flash[:notice] = "Thanks for signing up!" rescue ActiveRecord::RecordInvalid render :action => ''new'' end and def update @user = User.find(params[:id]) respond_to do |format| if @user.update_attributes(params[:user]) if !params[:photo][:uploaded_data].blank? #Create new photo for the user or find the existing one @photo = @user.photo ||= Photo.new @photo = @user.photo.build(params[:photo]) @photo.save end flash[:notice] = ''Your account was successfully updated.'' format.html { redirect_to users_url } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @user.errors.to_xml } end end end I would find any help / feedback useful. 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 -~----------~----~----~----~------~----~------~--~---
If anyone could also give some tips on how to delete the old attachment (photo) once a new one is created I would appreciate it. I keep getting an error message when I try to delete the old attachment before creating the new one regarding access to frozen hashes. 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 -~----------~----~----~----~------~----~------~--~---
Incase anyone is interested / need this, this is the final update action I have: def update @user = User.find(params[:id], :include => :photo) respond_to do |format| if @user.update_attributes(params[:user]) # If there is photo data, create the new photo if !params[:photo][:uploaded_data].blank? # Look to see if a previous photo exists @old_photo = Photo.find_by_user_id(@user.id) if params[:photo][:uploaded_data] if @old_photo.nil? @photo = @user.photo ||= Photo.new @photo = @user.photo.build(params[:photo]) @photo.save else @photo = @user.photo @photo.update_attributes(params[:photo]) end end flash[:notice] = ''Your account was successfully updated.'' format.html { redirect_to users_url } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @user.errors.to_xml } end end end --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---