Paperclip attachment to AWS - ActiveRecord::AssociationTypeMismatch

Hi,

I have been trying to do this for a few days now and cannot figure it
out. I would be very grateful is anyone can help me

I am trying to upload an attachment to AWS, S3 using paperclip,
however every time I keep getting this error:

ActiveRecord::AssociationTypeMismatch in
ProjectController#create_notice

Graphic(#37649720) expected, got Tempfile(#27280470)

RAILS_ROOT: C:/devlopment_tools/projects/codex1/active/bugtrigger
Application Trace | Framework Trace | Full Trace

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/
lib/
active_record/associations/association_proxy.rb:263:in
`raise_on_type_mismatch'
c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/
lib/
active_record/associations/has_one_association.rb:52:in `replace'
c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/
lib/
active_record/associations.rb:1246:in `graphic='
c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/
lib/
active_record/base.rb:2740:in `send'
c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/
lib/
active_record/base.rb:2740:in `attributes='
c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/
lib/
active_record/base.rb:2736:in `each'
c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/
lib/
active_record/base.rb:2736:in `attributes='
c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/
lib/
active_record/base.rb:2434:in `initialize'
c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/
lib/
active_record/base.rb:721:in `new'
c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/
lib/
active_record/base.rb:721:in `create'
C:/devlopment_tools/projects/codex1/active/bugtrigger/app/controllers/
project_controller.rb:128:in `create_notice'

The code is:

--Notice Model
class Notice < ActiveRecord::Base
   has_many :graphics
end

--Project Controller
def create_notice
   @notice = Notice.create(params[:notice])
end

--Form
<%= form.file_field(:graphic) %>

--Graphic
class Graphic < ActiveRecord::Base
   belongs_to :notice
   attr_accessor :notice_id
   has_attached_file :graphic,
                     :storage => :s3,
                     :s3_credentials => RAILS_ROOT + "/config/
s3.yml",
                     :path => ":attachment/:id/:style.:extension",
                     :bucket => "attachements"
end

Thanks!

Try this out

Hi,

I have been trying to do this for a few days now and cannot figure it

out. I would be very grateful is anyone can help me

I am trying to upload an attachment to AWS, S3 using paperclip,

however every time I keep getting this error:

ActiveRecord::AssociationTypeMismatch in

ProjectController#create_notice

Graphic(#37649720) expected, got Tempfile(#27280470)

RAILS_ROOT: C:/devlopment_tools/projects/codex1/active/bugtrigger

Application Trace | Framework Trace | Full Trace

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/

lib/

active_record/associations/association_proxy.rb:263:in

`raise_on_type_mismatch’

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/

lib/

active_record/associations/has_one_association.rb:52:in `replace’

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/

lib/

active_record/associations.rb:1246:in `graphic=’

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/

lib/

active_record/base.rb:2740:in `send’

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/

lib/

active_record/base.rb:2740:in `attributes=’

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/

lib/

active_record/base.rb:2736:in `each’

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/

lib/

active_record/base.rb:2736:in `attributes=’

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/

lib/

active_record/base.rb:2434:in `initialize’

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/

lib/

active_record/base.rb:721:in `new’

c:/devlopment_tools/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/

lib/

active_record/base.rb:721:in `create’

C:/devlopment_tools/projects/codex1/active/bugtrigger/app/controllers/

project_controller.rb:128:in `create_notice’

The code is:

–Notice Model

class Notice < ActiveRecord::Base

has_many :graphics

end

–Project Controller

def create_notice

@notice = Notice.create(params[:notice])

end

–Form

<%= form.file_field(:graphic) %>

–Graphic

class Graphic < ActiveRecord::Base

belongs_to :notice

attr_accessor :notice_id

has_attached_file :graphic,

                 :storage => :s3,

                 :s3_credentials => RAILS_ROOT + "/config/

s3.yml",

                 :path => ":attachment/:id/:style.:extension",

                 :bucket => "attachements"

end

has_attached_file :graphic,
:storage => :s3,

:path => ":attachment/:id.:extension",
:s3_credentials => open( "#{RAILS_ROOT}/config/s3.yml", 'r' ),

:s3_permissions => 'public-read',
:bucket => ApplicationConfig[ 's3_buckets' ][ 'graphics' ][ 'graphic' ]

Thanks, but still getting the same error.

Hi,

Thanks for that, but I am still getting the same error.

Not sure where to go with this

What is current trace…?

–Sandip