I have a scenario that my user need to upload a image first and then assign to another model, so I used a generic model, to upload the file first. But I always get a exception of ActiveRecord::UnknownAttributeError (unknown attribute: utf8). because rails automatically adds a utf-8 field for the form submit.
model: <code> class AttachedImage < ActiveRecord::Base belongs_to :attachable, :polymorphic => true
has_attached_file :image end </code>
migration: <code> class CreateAttachedImages < ActiveRecord::Migration def change create_table :attached_images do |t|
t.string :image_file_name t.string :image_content_type t.integer :image_file_size t.datetime :image_updated_at t.references :attachable, :polymorphic => true
t.timestamps end end end </code>
And the controller: <code> class AttachedImagesController < ApplicationController def create
@attched_image = AttachedImage.new(params)
respond_to do |format| if @attched_image.save format.js else format.js end end end end </code>
the view part: <code> <div id="upload-image-dialog"> <%= form_tag(@attached_image, :method => "POST", :remote => true, :html => { :multipart => true }) do %> <%= file_field_tag :image %> <%= submit_tag("submit") %> <% end %> <h1 style="display:none">Successfully Uploaded.</h1> </div> </code>
it's quite straight forward, but every time I submit this form, I will get an exception of the utf8 field added automatically by rails.
ActiveRecord::UnknownAttributeError (unknown attribute: utf8): app/controllers/attached_images_controller.rb:5:in `new' app/controllers/attached_images_controller.rb:5:in `create'
I could not understand that, this shall not be a problem right? We are writing @model = Model.new(params) everyday, hope someone could help me out and explain what's going on under the hood, thanks!