我很难将载波一起使用mongoid。我正在编写一个需要将图像存储在多个集合中的应用程序,所以我创建了Image类,如下所示(请原谅可成像的使用):
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 'carrierwave'
gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
我的版本是Mongoid - 2.4.7和carrierwave - 0.6.2。
我的主要问题是如何解决此错误,但我也不太确定如何设置表单来接收这些图像。 (理想情况下,每次选择文件时,我都想使用javascript添加新对话框。)我设置模型或使用carrierwave的方式有问题吗?
答案 0 :(得分:1)
您需要为blog_images指定目标类,因为它不能从关系名称派生。尝试:
embeds_many :blog_images, as: :imageable, :class_name => 'Image'