bicycle.rb
has_many :pictures, as: :imageable
accepts_nested_attributes_for :pictures, allow_destroy: true, :reject_if => proc { |obj| obj.blank? }
picture.rb
belongs_to :imageable, polymorphic: true
has_attached_file :image
validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png"]
修改视图
<% @bicycle.pictures.each do |pic| %>
<%= bicycle_form.fields_for :pictures, pic do |frm| %>
<div class="col-lg-2">
<%= image_tag pic.image.url, class: 'edit-image-thumb'%>
Delete: <%= frm.check_box :_destroy %>
</div>
<% end %>
<% end %>
图片属性_destroy
已列入白名单:
pictures_attributes: [:id, :image, :_destroy]
问题:
据我所知,_destroy
复选框必须删除数据库中的整个记录(图片记录),但它只是删除了image_file_name
image_content_type
image_file_size
列值,但记录仍然存在。
解释
我有自行车 has many
pirctures 。因此,当我创造新的自行车时,我可以附上许多照片。如果我想删除它们,我将edit
查看并选中要删除的图片的复选框。但是图片记录并没有从数据库中删除,只是清除了image_file_name
image_content_type
image_file_size
列,只留下了空白但列(在同一记录中)imageable_type
和{{1仍然有价值观。所以图像显示(它仍然是最远的)但是像缺失一样(记录存在但图像名称的字段为零)