如何更新最后一条记录而不是创建一条新记录

时间:2014-08-07 19:31:00

标签: ruby-on-rails ruby ruby-on-rails-4 paperclip

我使用回形针上传图片。 我想要的是,当文件存在时,而不是创建一个新记录,更新最后一个文件的名称。 在回形针中,文件名为path

我正在尝试这个:

 def create
  if(params[:path])
   @photo = current_user.photos.update_attribute(:path, params[:path]).last
  else
   @photo = current_user.photos.new(photo_params)
  end
end

我的文件输入名称为photo[path]

我想仅向现有行添加path值: enter image description here

1 个答案:

答案 0 :(得分:0)

你可以在这里使用一些Rails魔法,特别是find_or_create_by及其变体。例如,如果您这样做:

@photo = current_user.photos.find_or_create_by_path(params[:path])

首先会查找包含该路径的条目,如果找不到,则创建一个新条目。请注意,您也可以使用Ruby try method而不是if params[:path]块。

有关find_or_create_by的详细信息,请参阅the documentation