2013-02-07 46 views
2

如何使用蜻蜓圖像複製ActiveRecord對象?Rails中的蜻蜓寶石圖像的重複記錄

我有以下幾點。

型號:

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 %> 

當我呈現的形式,形象展示,但在提交時,圖像被清除出。

有一件事,我想確保它們實際上是不同的圖像,所以如果我編輯原始記錄,它不會影響重複。

回答

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行爲,但導致原始對象的文件被刪除。上述解決方案終於爲我做了訣竅。

+0

此答案中的「附件」與原始問題中的「縮略圖」相同嗎?它不一致;-) –