मैं कैरियरवेव द्वारा अपलोड की गई छवियों को फसल करने की क्षमता को पार कर रहा हूं। यहां RailsCast video on Youtube है जिसका मैं अनुसरण कर रहा हूं।अपरिभाषित विधि `mark_for_destruction? ' कैरियरवेव, आरएमएजी
लेकिन अपलोडर में RMagick सहित के बाद, मैंने प्राप्त किया:
undefined method `marked_for_destruction?' for #<ImageUploader:0x007fe86634fcf0>
क्या एक बिल्ली इस मैंने सोचा है। मैंने इस विधि को कहीं भी नहीं बुलाया है। लेकिन अगर यह परिभाषित नहीं किया गया है, तो इसे परिभाषित करने दें! और यह काम किया! लेकिन बाद में मैंने इस विधि के बारे में और अधिक जांच की और पाया कि यह सक्रिय रिकॉर्ड ऑटोसेव एसोसिएशन मॉड्यूल में बनाया गया है। और डॉक्स, इस विधि के बारे से:
रिटर्न या नहीं, इस रिकॉर्ड माता-पिता के हिस्से के रूप नष्ट हो जाएगा लेन-देन को बचाने के।
केवल उपयोगी अगर: माता-पिता पर ऑटोसवे विकल्प इस संबंधित मॉडल के लिए सक्षम है।
लेकिन मैंने autosave: true
किसी भी ऑब्जेक्ट को पास नहीं किया!
तो, मेरा पहला सवाल - क्या यह डिफ़ॉल्ट रूप से किया गया था?
2 - रेलस्कास्ट ट्यूटोरियल पर उन्होंने इस विधि को परिभाषित नहीं किया। मुझे क्यों करना पड़ा
3 - मैं अपना कोड बोले पास करता हूं। कोई त्रुटि?
4 - यदि संभव हो, तो क्या कोई यह समझा सकता है कि यह प्रक्रिया सामान्य रूप से कैसे काम करती है?
बहुत धन्यवाद!
product.rb:
has_one :image
validates :image, presence: true
mount_uploader :image, ImageUploader
products_controller.rb:
def create
@product = Product.new(product_params)
@product.category_id = params[:category_id]
@product.user_id = current_user.id
respond_to do |format|
if @product.save
if params[:product][:image].present?
format.html { render :crop }
else
format.html { redirect_to @product, notice: 'Product was successfully created.' }
format.json { render :show, status: :created, location: @product }
end
else
format.html { render :new }
format.json { render json: @product.errors, status: :unprocessable_entity }
end
end
end
image_uploader.rb:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
def marked_for_destruction?
@marked_for_destruction
end
def mark_for_destruction
@marked_for_destruction = true
end
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :large do
resize_to_limit(600,600)
end
end
धन्यवाद, आप लिख है कि यह द्वारा अपने जवाब को बेहतर बना सकते क्योंकि Rails5 'आवश्यक' डिफ़ॉल्ट रूप से TRUE' और यह कैसे से संबंधित है के लिए सेट झंडा belongs_to' मेरी समस्या मैं शर्त लगाता हूं कि लोग इसके लिए आभारी होंगे। मैं अब उस परियोजना पर काम नहीं कर रहा हूं, इसलिए इसे आसानी से जांच नहीं सकते –