আমার একটি অ্যাক্টিভেকর্ড মডেল রয়েছে যা trueথেকে ফিরে আসছে valid?(এবং .erferences খালি রয়েছে) তবে ফিরে falseআসছে save()। যদি মডেল উদাহরণটি বৈধ হয়, তবে কীভাবে সংরক্ষণগুলি ব্যর্থ হওয়ার কারণ হচ্ছে তা আমি কীভাবে জানতে পারি?
আমার একটি অ্যাক্টিভেকর্ড মডেল রয়েছে যা trueথেকে ফিরে আসছে valid?(এবং .erferences খালি রয়েছে) তবে ফিরে falseআসছে save()। যদি মডেল উদাহরণটি বৈধ হয়, তবে কীভাবে সংরক্ষণগুলি ব্যর্থ হওয়ার কারণ হচ্ছে তা আমি কীভাবে জানতে পারি?
উত্তর:
আপনার সমস্ত কলব্যাক পরীক্ষা করুন।
আমার এমন সমস্যা ছিল যেখানে আমার ছিল এবং "পরে_বালাইটি" পদ্ধতিটি যা আমি মডেলটিতে একগুচ্ছ পরিবর্তন করার পরে ব্যর্থ হয়েছিল। মডেলটি বৈধ ছিল তবে "আফটার_অলিয়েট" মিথ্যা প্রত্যাবর্তন করছে, তাই যদি আমি model.validএটি ব্যবহার করে সত্য বলি, তবে আমি যদি এটি সংরক্ষণ করি তবে এটি আমাকে বৈধতা ত্রুটি দিয়েছে (পরবর্তী_ফলিত কলব্যাক থেকে পেরিয়ে গেছে)। এটি অদ্ভূত ছিল.
অ্যাপ্লিকেশন ট্রেসটি দেখুন এবং আপনার দেখতে পারা উচিত কোডের রেখাটি কী ব্যতিক্রম বাড়িয়ে তুলছে।
"Hey! That's MY fake leg!" # Believe it or not, this is important। আমি তা করতাম না। ;)
true.tap { do_something }
ব্যাং সংস্করণটি save!(শেষে একটি বিস্মৃত চিহ্ন সহ) ব্যবহার করার চেষ্টা করুন এবং ফলাফল ত্রুটিটি পরীক্ষা করে দেখুন।
save!উত্থাপন করতে পারে ActiveRecord::RecordInvalid(যেহেতু এটি বৈধতা চালায়) বা ActiveRecord::RecordNotSavedতাই আপনি উদ্ধার করতে চান।
.saveবৈধতা যা বৈধতার কারণে নয় তা নির্ণয় করার মৌলিক প্রশ্নের ন্যূনতম অসন্তুষ্টিজনক উত্তর । "ন্যূনতম অসন্তুষ্ট" যোগ্যতা এই উত্তরটি নয়, জেলগুলিকে বোঝায়।
যদি @user.save(উদাহরণস্বরূপ) ফিরে আসে false, তবে সমস্ত ত্রুটি পেতে কেবল এটি চালান:
@user.errors.full_messages
হ্যাঁ, আমি আমার পূর্ববর্তী_ * কলব্যাকগুলিতে সত্য ফিরে আসছি তা নিশ্চিত করেই এই সমস্যাটি সমাধান করেছি তবে এটি কাজ শুরু করে :)