التعلق_FU فشل في التحقق من الصحة عند التحديث
-
18-09-2019 - |
سؤال
لقد كنت أستخدم Attachment_fu في مشروع لفترة طويلة وكان كل شيء على ما يرام ولكن الآن أحاول جلب المشروع إلى القضبان 2.3.3 أعاني من علة غريبة يقودني إلى المكسرات. المرفق، الشعار في هذه الحالة، يتحقق بشكل صحيح على إنشاء ولكن لا يفشل التحقق من الصحة عند التحديث. لقد قمت بتصحيحه ويقوم بفشل التحقق من الصحة التالفة ولكن لا يبدو أن رمي استثناء أو على الأقل لا يتم اكتشافه بإنقاذي في وحدة التحكم. يبدو أنني جربت كل شيء ولكن لا أستطيع معرفة هذا واحد.
مراقب:
# POST /tournaments
# POST /tournaments.xml
def create
# Build tournament
@tournament = Tournament.new(params[:tournament].merge(:user_id => current_user.id) )
# Save the uploaded attachments
params[:uploads].each do |upload|
@tournament.documents << Document.new({:uploaded_data => upload[:document]}.merge(:description => upload[:description]))
end unless params[:uploads].nil?
# if supplied save an event logo
@logo = Logo.new({:uploaded_data => params[:logo][:upload_data]}) unless params[:logo].nil? or params[:logo][:upload_data].blank?
@tournament.logo = @logo unless @logo.nil?
respond_to do |format|
begin
Tournament.transaction do
@tournament.logo.save! unless @tournament.logo.nil?
@tournament.save!
end
flash[:notice] = 'Tournament was successfully created.'
format.html { redirect_to tournament_url(@tournament) }
format.xml { head :created, :location => tournament_url(@tournament) }
rescue
flash[:notice] = 'Errors prevented your Tournament from being saved'
format.html { render :action => "new" }
format.xml { render :xml => @tournament.errors, :status => :unprocessable_entity }
end
end
end
# PUT /tournaments/1
# PUT /tournaments/1.xml
def update
@tournament = Tournament.find(params[:id])
@tournament.user_id = session[:orig_user_id]
respond_to do |format|
begin
Tournament.transaction do
# Update Logo if necessary
unless params[:logo][:upload_data].blank?
@tournament.logo.destroy unless @tournament.logo.nil?
@tournament.logo = Logo.new({:uploaded_data => params[:logo][:upload_data]}.merge(:user_id => current_user.id))
end
# Save any uploaded documents
params[:uploads].each do |upload|
@tournament.documents << Document.new({:uploaded_data => upload[:document]}.merge(:description => upload[:description]))
end unless params[:uploads].nil?
# Update Tournamnet Attributes
@tournament.attributes = params[:tournament]
# Save the Tournament
@tournament.save!
end
flash[:notice] = 'Tournament was successfully updated.'
format.html { redirect_to tournament_url(@tournament) }
format.xml { head :ok, :location => tournament_url(@tournament) }
rescue
flash[:notice] = 'Errors prevented your Tournament from being updated'
format.html { render :action => "edit" }
format.xml { render :xml => @tournament.errors, :status => :unprocessable_entity }
end
end
end
نموذج الشعار:
class Logo < Asset
validate_on_create :attachment_valid?
has_attachment :content_type => :image,
:storage => :file_system,
:max_size => 4.megabytes,
:resize_to => '810x150>',
:processor => :ImageScience,
:thumbnails => { :thumb => '270x50>' }
def attachment_valid?
content_type = attachment_options[:content_type]
unless content_type.nil? || content_type.include?(self.content_type)
errors.add(:upload_data, " * must be an image file (jpg, gif, or png)")
end
size = attachment_options[:size]
unless size.nil? || size.include?(self.size)
errors.add(:upload_data, "* image must be 4MB or less")
end
end
before_thumbnail_saved do |thumbnail|
record = thumbnail.parent
thumbnail.user_id = record.user_id
thumbnail.listing_id = record.listing_id
end
end
أنا أقوم بتشغيل ما يلي
القضبان 2.3.3.
Image_science 1.2.0.
شكرا - طيط
المحلول
يمكنك أيضا استخدام رد رد اتصال A: Preforke لاختبار الكائن. إذا كان غير صالح، ارفع استثناء.
نصائح أخرى
حاول إضافة:
validate_on_update :attachment_valid?
لا تنتمي إلى StackOverflow