1

我很难将carrierwave一起使用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 回答