ValeriiVasin
ValeriiVasin

Reputation: 8706

CarrierWave. Impossible to save the file with STI

I have model Document:

class Document < ActiveRecord::Base
  belongs_to :company
  validates :name, :presence => true
end

And two classes inherited from Document:

License:

class License < Document
  mount_uploader :file, DocumentUploader
end

And Certificate

class Certificate < Document
  mount_uploader :file, DocumentUploader
end

And when I try to do current_company.licenses.create(...) or same action for the certificate, always all params are saved, besides file, which always is nil

Also I've tried to mount file inside of Document model... Help me please.

Here is logs:

Started POST "/companies/1/verified" for 127.0.0.1 at Mon Mar 19 09:33:41 +0200 2012
Processing by CompaniesController#verified as HTML
  Parameters: {"verified"=>{"certificate"=>{"name"=>"Certificate", "file"=>"test.png"}, "insured"=>"2000000", "suppliers"=>"", "license"=>{"name"=>"License", "file"=>"test.png"}}, "authenticity_token"=>"0hIn41Tjonm/AXZBKM1PE/tjQxJDLqZaojMTHDoZq2k=", "id"=>"1", "utf8"=>"✓", "commit"=>"Update verifications"}
  Company Load (0.7ms)  SELECT "companies".* FROM "companies" WHERE "companies"."id" = 1 LIMIT 1
   (0.1ms)  BEGIN
  SQL (0.8ms)  INSERT INTO "documents" ("company_id", "created_at", "file", "name", "type", "updated_at", "verified") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"  [["company_id", 1], ["created_at", Mon, 19 Mar 2012 07:33:41 UTC +00:00], ["file", nil], ["name", "License"], ["type", "License"], ["updated_at", Mon, 19 Mar 2012 07:33:41 UTC +00:00], ["verified", false]]
   (0.6ms)  COMMIT
   (0.1ms)  BEGIN
  SQL (0.5ms)  INSERT INTO "documents" ("company_id", "created_at", "file", "name", "type", "updated_at", "verified") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"  [["company_id", 1], ["created_at", Mon, 19 Mar 2012 07:33:41 UTC +00:00], ["file", nil], ["name", "Certificate"], ["type", "Certificate"], ["updated_at", Mon, 19 Mar 2012 07:33:41 UTC +00:00], ["verified", false]]
   (0.4ms)  COMMIT
Redirected to http://localhost:3000/company/profile
Completed 302 Found in 18ms (ActiveRecord: 3.3ms)

Thanks.

Upvotes: 4

Views: 646

Answers (1)

Adam Carlile
Adam Carlile

Reputation: 416

Are you sure you've set the form that you've uploading the file with to have a multipart payload?

If not the file won't get sent on submission, and rails will only receive the textual form data. Inside the form_helper tag you'll need to add.

:html => {:multipart => true}

Upvotes: 1

Related Questions