Mongoid と CarrierWave を使用して GridFS に従って単純な has_many ポリモーフィックな関係を実装しています。ネストされた属性の割り当てを通じて、アバターを使用して新しいユーザーを作成しようとすると、次のようになります。
Cannot serialize an object of class ActionDispatch::Http::UploadedFile into BSON
他の誰かがこれに遭遇しましたか?「Mongoid と CarrierWave を使用した GridFS」の記事に何人かが返信を投稿していることに気付きましたが、回答のある人を見つけることができませんでした。
# app/models/asset.rb
class Asset
include Mongoid::Document
include Mongoid::Timestamps
mount_uploader :file, AssetUploader
field :name, type: String
referenced_in :attachable, polymorphic: true
end
# app/models/user.rb
class User
include Mongoid::Document
include Mongoid::Timestamps
references_one :avatar, as: :attachable
accepts_nested_attributes :avatar
end
# config/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.grid_fs_connection = Mongoid.database
config.storage = :grid_fs
config.grid_fs_access_url = "/images"
end
# app/uploaders/asset_uploader.rb
class AssetUploader < CarrierWave::Uploader::Base
end
# app/views/users/new.html.haml
= semantic_form_for(@user, html: { multipart: true }) do |f|
= f.inputs do
= f.semantic_fields_for :avatar do |af|
= af.input :file, as: :file
= f.buttons do
= f.commit_button "Upload"