2

トンボの画像で 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 %>

フォームをレンダリングすると画像が表示されますが、送信すると画像がクリアされます。

1 つ、実際には異なる画像であることを確認したいので、元のレコードを編集しても複製には影響しません。

4

1 に答える 1

2

オブジェクトの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たが、元のオブジェクトのファイルが削除されたことに注意してください。上記のソリューションは、最終的に私にとってはうまくいきました。

于 2013-11-04T21:42:07.270 に答える