【问题标题】:Duplicate record with Dragonfly gem image in RailsRails中蜻蜓宝石图像的重复记录
【发布时间】:2013-02-07 15:26:10
【问题描述】:

如何复制带有蜻蜓图像的 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 %>

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

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 dragonfly-gem


    【解决方案1】:

    这是我如何让它工作的,覆盖对象的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 行为,但这会导致原始对象的文件被删除。上述解决方案终于为我解决了问题。

    【讨论】:

    • 此答案中的“附件”与原始问题中的“缩略图”是否相同?这是不一致的;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    相关资源
    最近更新 更多