Adding Paperclip Attachment to Spree Orders Table,

192 views Asked by At

I am working on an ecommerce website using Solidus, Rails. The site allows you to order photo frames & prints from a variety of options. To print a photo a user must upload the jpg file of the photo. So, to allow that I modified the orders table and added a paperclip attachment called 'attachment'

I ran the following command

rails generate paperclip SpreeOrder attachment

Which generated the migrations, then I ran rake db:migrate

Then I created a spree/order_decorator.rb file, and added has_attached_file

 module Spree::OrderDecorator
  has_attached_file :attachment, styles: {
      :medium => {
          :geometry => "640x480",
          :format => 'jpeg'
      },
      :thumb => { :geometry => "160x120", :format => 'jpeg', :time => 10}
  }, :processors => [:transcoder]

  validates_attachment_content_type :attachment, content_type: /\Aimage\/.*\z/

  Spree::Order.prepend self
end

After this I ran the server, and ended up getting this error

 undefined method `has_attached_file' for Spree::OrderDecorator:Module (NoMethodError)

I have configured solidus for use with paperclip only, so I am really confused as to why I am getting this error, even later I manually went and generated a paperclip.rb file in the config/initializers directory, but still I get the same error.

Please help with this!! Thank You!!

1

There are 1 answers

0
kennyadsl On BEST ANSWER

You should add those paperclip method at class level in the prepended module:

def self.prepended(base)
  base.has_attached_file 
end