Rais 3, nested attributes problem with paperclip

I have two models, one model girl and one girl_photos (a file upload asset). The only code I have in models which describes the association is:

For the girl => belongs_to :girl and has_attached_file :photo For the model girl_photos => has_many :girl_photos and accepts_nested_attributes_for :girl_photos

I've tried to save as a nested attribute the photo, it saves the association in the database but it doesn't set the name of the image and doesn't upload it.

I thought that it might be a problem with paperclip so I created another test model with no association, just one image upload (in the same model) and it worked fine (it uploaded the images and saved it correctly).

In the log file I see the following: INSERT INTO `girls` (`name`, `surname`, `height`, `weight`, `description`, `created_at`, `updated_at`) VALUES ('test', 'test', 'test', 'test', 'test', '2011-05-27 18:31:57', '2011-05-27 18:31:57')

INSERT INTO `girl_photos` (`created_at`, `updated_at`, `photo_file_name`, `photo_content_type`, `photo_file_size`, `photo_updated_at`, `girl_id`) VALUES ('2011-05-27 18:31:57', '2011-05-27 18:31:57', NULL, NULL, NULL, NULL, 4) [paperclip] Saving attachments.

For some reason, on the second query, it saves the photo but it doesn't captures the name and it doesn't upload it. I don't know what else could I try or test.

Thank you for your help.

I have two models, one model girl and one girl_photos (a file upload

asset). The only code I have in models which describes the association

is:

For the girl => belongs_to :girl and has_attached_file :photo

For the model girl_photos => has_many :girl_photos and

accepts_nested_attributes_for :girl_photos

First, the above does not make sense… do you mean the following:

Model Girl has_many :girl_photos

Model GirlPhotos belongs_to :girl

I am assuming that your GirlPhoto model has a girl_id field, correct?

Anyhow confirm this as if the above is as you say, the associations look wrong.

Yes! Sorry David I meant exactly what you wrote and yes my GirlPhoto model has a girl_id. Sorry for the wrong information.

I am also using paperclip 2.3.8 and rails 3.0.6. I can't figure out what is wrong, I checked on google and I found a tutorial which is exactly what I have done (the tutorial => http://sleekd.com/general/adding-multiple-images-to-a-rails-model-with-paperclip/).

Yes! Sorry David I meant exactly what you wrote and yes my GirlPhoto

model has a girl_id. Sorry for the wrong information.

I am also using paperclip 2.3.8 and rails 3.0.6. I can’t figure out

what is wrong, I checked on google and I found a tutorial which is

exactly what I have done (the tutorial =>

http://sleekd.com/general/adding-multiple-images-to-a-rails-model-with-paperclip/).

I dont know the exact answer, but I would start with a debugger breakpoint in the controller create action and see what params you are getting, how they are getting assigned to your model attributes (I guess you are probably using update_attributes), and this should at least give you more information on what’s going on.

If still having trouble would not hurt to post your schema for pertinent models and the model code pertaining to paperclip to see if there is anything not matching up.

It worked. I tried many things and now it uploads my images. Thank you even though I didn't understand what was wrong.

Hi everybody !

This topic is quite old, but since i was confronted to a similar problem, i thought it could help anybody interested in.

After consulting the rails API over nested attributes: http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

, I solved the problem through allowing parameters in the controller.

Adapted to the given example, it should go like that :

File : app/controllers/girls_controller.rb

[…]

def girl_params

params.require(:girl).permit(:name,:surname,:height,:weight,:description,girl_photos_attributes:[:photo,:id,:_destroy])

end

Happy Hacking !