1

キャリアウェーブをMongoidと一緒に使用するのに問題があります。画像を多数のコレクションに保存する必要があるアプリケーションを作成しているので、次のようにImageクラスを作成しました(imageableの使用を許してください)。

class Image
  include Mongoid::Document

  embedded_in :imageable, polymorphic: true

  mount_uploader :file, ImageUploader
end

ImageUploaderによって作成されたとおりrails generate uploader Imageです。

次に、ストーリーモデルがあります。

class Story
  include Mongoid::Document
  include Mongoid::Timestamps

  field :title, :type => String
  field :content, :type => String
  field :category, :type => String

  embeds_many :blog_images, as: :imageable
end

Storyオブジェクトを作成しようとするとuninitialized constant BlogImage、フォームから入力して画像を作成しなくてもエラーが発生します。story.blog_images << Image.newまた、コンソールで同じエラーで呼び出すことを試みました。

私のgemファイルには次のものがあります。

gem 'carrierwave'
gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'

私のバージョンはMongoid-2.4.7とcarrierwave-0.6.2です。

私の主な質問は、このエラーを修正する方法ですが、これらの画像を受信するためのフォームを設定する方法についてもよくわかりません。(理想的には、ファイルが選択されるたびに、javascriptを使用して新しいダイアログを追加したいと思います。)モデルの設定方法またはcarrierwaveの使用方法に問題がありますか?

4

1 に答える 1

1

リレーションの名前から派生させることはできないため、blog_imagesのターゲットクラスを指定する必要があります。試す:

embeds_many :blog_images, as: :imageable, :class_name => 'Image'
于 2012-05-30T18:42:43.957 に答える