无法在具有多态图像模型的载波中将多个图像嵌入到mongoid中

时间:2012-05-30 12:32:24

标签: ruby-on-rails ruby-on-rails-3 mongoid nested-forms carrierwave

我很难将载波一起使用mongoid。我正在编写一个需要将图像存储在多个集合中的应用程序,所以我创建了Image类,如下所示(请原谅可成像的使用):

class Image
  include Mongoid::Document

  embedded_in :imageable, polymorphic: true

  mount_uploader :file, ImageUploader
end

ImageUploaderrails 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的方式有问题吗?

1 个答案:

答案 0 :(得分:1)

您需要为blog_images指定目标类,因为它不能从关系名称派生。尝试:

embeds_many :blog_images, as: :imageable, :class_name => 'Image'