我正在尝试构建一个示例应用程序,用户可以在其中将两种不同类型的图像上传到名为 Article 的模型。一种图像是文章内容中使用的图像,另一种用作缩略图。这两种类型的图像都由名为 ArticleImage 和 ArticleThumb 的单独多态模型处理。
问题是,每当我尝试上传缩略图时,都会出现“无法批量保护受保护的属性::article_thumb ”错误。其他类型的图像上传不会发生此错误。
文章
class Article < ActiveRecord::Base
attr_accessible :title, :article_images_attributes,
:article_thumbs_attributes
has_many :comments, as: :commentable
has_many :article_images, as: :attachable, dependent: :destroy
has_many :article_thumbs, as: :attachable, dependent: :destroy
accepts_nested_attributes_for :article_images,
reject_if: :all_blank,
allow_destroy: true
accepts_nested_attributes_for :article_thumbs, allow_destroy: true
belongs_to :user
validates :title, presence: true, length: {maximum: 60}
validates :user_id, presence: true
validates :article_images, presence: true
end
文章图片
class ArticleImage < ActiveRecord::Base
belongs_to :attachable, polymorphic: true
attr_accessible :article_image
mount_uploader :article_image, ArticleImageUploader
end
文章拇指
class ArticleThumb < ActiveRecord::Base
belongs_to :attachable, polymorphic: true
attr_accessible :article_thumb
mount_uploader :article_thumb, ArticleThumbUploader
end
新的.html.erb
<%= simple_nested_form_for @article, html: {multipart: true},
defaults: {required: false} do |f| %>
<%= render 'shared/error_messages', object: @article %>
<%= f.input :title %>
<div class = "control-label">
Image file upload
</div>
<%= f.simple_fields_for :article_images do |p| %>
<%= p.file_field :article_image %>
<%= p.link_to_remove 'Remove' %>
<% end %>
<%= f.link_to_add 'Add image', :article_images %>
<span class="hint_end">Acceptable file formats: JPG, JPEG, GIF, PNG</span>
<div class = "control-label">
Thumbnail upload
</div>
<%= f.file_field :article_thumb %>
<span class="hint">
Automatically resized to 90x90 px.
</span>
<span class="hint">
Default thumbnail is used if no thumbnail gets uploaded.
</span>
<span class="hint_end">
Acceptable file formats: JPG, JPEG, GIF, PNG
</span>
<%= f.submit "Upload article" %>
<% end %>
我觉得这个错误只需要一个非常简单的修复,但我似乎无法弄清楚。任何帮助,将不胜感激。
作为旁注,我想知道将所有不同的上传器安装在一个多态模型中是否有效,这样您就不必在每次要上传不同类型的图像/文件时创建不同的模型。如果您没有太多时间,您当然不需要费心回答这个问题,但欢迎就此事发表任何言论!