Undefined Method 'metadata' when uploading using mongoid-paperclip gem-Record and share programming errors

As I said above, I had a similar problem with Mongoid, Carrierwave and GridFS. My solution is super hacky but it worked for me.

I had an Image class which is where my image was mounted

class Image
  include Mongoid::Document
  include Mongoid::Timestamps

  field :title
  field :image
  field :order

  mount_uploader :image, ImageUploader
  embedded_in :article
end

class Article
  include Mongoid::Document
  ...
  embeds_one :image
  ...
end

My carrierwave uploader wanted the attributes sent to it with the key of the mount uploader (image).

Image.create( :image => image_attributes)

But the article’s new/edit form created something that looked like:

:article => { :image => #ActionDispatch... }

instead of

:article => { :image => { :image => #ActionDispatch... } }

so my solution was to change the name of the field in the form to

file_field :article, :photo

and then add a photo setter to the article class that created an image

model Article
  include Mongoid::Document
  ...
  def photo=(attrs)
    create_image(:image => attrs)
  end
end

I tried this with image= but it infinitely recursed and did evil things.
I also tried this

file_field "article[image]", :image

without the setter and it didn’t raise an exception but it also didn’t save my image.

as far as i know, paperclip is pretty similar in these regards. Maybe this will work for someone or someone can clean up my mess

Originally posted 2013-08-31 07:54:49.