Rails中带有Dragonfly宝石图像的重复记录



如何用蜻蜓图像复制ActiveRecord对象?

我有以下内容。

型号:

class Event < ActiveRecord::Base
  image_accessor :thumbnail
  attr_accessible :thumbnail, :remove_thumbnail, :retained_thumbnail
  validates :thumbnail, presence: true
end

控制器:

def clone
  @event = Event.find(1).dup
  render :new
end

视图:

<%= form_for @event do |f| %>
  <%= f.label :thumbnail %>
  <%= image_tag(@event.thumbnail.thumb('100x75').url) %>
  <label><%= f.check_box :remove_thumbnail %> Remove?</label>
  <%= f.file_field :thumbnail %>
  <%= f.hidden_field :retained_thumbnail %>
<% end %>

当我呈现表单时,会显示图像,但在提交时,图像会被清除。

有一点,我想确保它们实际上是不同的图像,所以如果我编辑原始记录,它不会影响复制。

以下是我如何让它工作,覆盖对象的dup行为:

def dup
  target = Event.new(self.attributes.reject{|k,v| ["id", "attachment_uid"].include?(k) })
  target.attachment = self.attachment
  target
end

然后,当您在目标上调用save时,图像将被复制到新位置。

请注意,在第一行中,我首先尝试了target = super,以利用对象的默认dup行为,但这导致原始对象的文件被删除。上面的解决方案终于帮了我一把。

相关内容

  • 没有找到相关文章

最新更新