Когда пользователь редактирует что-то в моем приложении, он вынужден повторно загрузить свое изображение с помощью скрепки, даже если он не меняет его. Невыполнение этого требования приведет к ошибке, так как я validate_presence_of: image. Это довольно раздражает.
Как я могу сделать так, чтобы Paperclip не обновлял свои атрибуты, если пользователь просто не предоставил новое изображение для редактирования?
Фотоконтроллер только что из генератора Rails. Остальная часть исходного кода приведена ниже.
Модели / accommodation.rb
class Accommodation < ActiveRecord::Base
attr_accessible :photo
validates_presence_of :photo
has_one :photo
has_many :notifications
belongs_to :user
accepts_nested_attributes_for :photo, :allow_destroy => true
end
Контроллеры / accommodation_controller.rb
class AccommodationsController < ApplicationController
def index
@accommodations = Accommodation.all
end
def show
@accommodation = Accommodation.find(params[:id])
rescue ActiveRecord::RecordNotFound
flash[:error] = "Accommodation not found."
redirect_to :home
end
def new
@accommodation = current_user.accommodations.build
@accommodation.build_photo
end
def create
@accommodation = current_user.accommodations.build(params[:accommodation])
if @accommodation.save
flash[:notice] = "Successfully created your accommodation."
redirect_to @accommodation
else
@accommodation.build_photo
render :new
end
end
def edit
@accommodation = Accommodation.find(params[:id])
@accommodation.build_photo
rescue ActiveRecord::RecordNotFound
flash[:error] = "Accommodation not found."
redirect_to :home
end
def update
@accommodation = Accommodation.find(params[:id])
if @accommodation.update_attributes(params[:accommodation])
flash[:notice] = "Successfully updated accommodation."
redirect_to @accommodation
else
@accommodation.build_photo
render :edit
end
end
def destroy
@accommodation = Accommodation.find(params[:id])
@accommodation.destroy
flash[:notice] = "Successfully destroyed accommodation."
redirect_to :inkeep
end
end
Модели / photo.rb
class Photo < ActiveRecord::Base
attr_accessible :image, :primary
belongs_to :accommodation
has_attached_file :image,
:styles => {
:thumb=> "100x100#",
:small => "150x150>" }
end