如何使用PaperClip处理多个模型?

时间:2014-07-08 06:08:39

标签: postgresql ruby-on-rails-4 paperclip activeadmin

我正在构建一个建立在Active Admin之上的应用程序。我的想法是拥有一个可以使用类似CMS的界面控制和更新/编辑的后端。从那里开始,我正在为我在Active Admin中控制的数据构建API。使用该API,我在前端使用Angular.js显示它。

我遇到的问题是使用Paperclip。图片/图像对于这个项目非常重要,能够从回形针访问数据同样重要。

当前的问题是我在网站的管理部分。我设置了2个主要部分,ProjectMember。我设置了各种字段,一切正常,我能够生成API。然后我添加了图片,一切都破了。这是我目前的设置;

project.rb (项目有多个图片)

class Project < ActiveRecord::Base
   has_many :images
end

member.rb (有1张图片)

class Member < ActiveRecord::Base
  has_one :image
end

image.rb

class Image < ActiveRecord::Base

belongs_to :member
belongs_to :project

# PaperClip
has_attached_file :image, :styles => { :small => "100x100", :medium => "200x200", :large => "300x300" }, 
              :url  => "/path/to/images/url", 
              :path => ":path/to/images"
validates_attachment :image, content_type: { content_type:     ["image/jpg", "image/jpeg", "image/png"] }

accepts_nested_attributes_for :member, :project

我得到的当前错误是;

ActiveRecord::UnknownAttributeError (unknown attribute: image)

这是在获得后改变了一些东西;

Paperclip::Errors::MissingRequiredValidatorError (Paperclip::Errors::MissingRequiredValidatorError):

我已经运行了迁移,更改了迁移,乱搞了一堆其他资源,而且我仍然不知道导致问题的确切原因。看起来它可能是几个不同的东西,我试图实现这些修复,但它总是只是导致我另一个错误或只是导致一个循环。

任何帮助将不胜感激。无论如何,我可以发布更多代码。

1 个答案:

答案 0 :(得分:0)

您必须将accepts_nested_attributes_for :images, :allow_destroy => true放在Project和Member类中。 而且您还必须允许ActiveAdmin模型中的图像:

permit_params images_attributes: [:id, :image, :_destroy]

当您根本不验证附件时会发生什么?