আপনি কীভাবে বিশদটি ব্যাখ্যা করতে পারবেন যে :before_save
ও :before_create
রবি অন রেল কলব্যাকগুলি কী এবং তাদের কী কী আছে তার ব্যর্থতার সাথে বৈধতা যাচাই করার জন্য? বৈধতা পরে :before_save
বা ঘটে :before_create
?
আপনি কীভাবে বিশদটি ব্যাখ্যা করতে পারবেন যে :before_save
ও :before_create
রবি অন রেল কলব্যাকগুলি কী এবং তাদের কী কী আছে তার ব্যর্থতার সাথে বৈধতা যাচাই করার জন্য? বৈধতা পরে :before_save
বা ঘটে :before_create
?
উত্তর:
রেলের অধীনে একটি ক্রিয়েশন অপারেশনে, ডাটাবেস অপারেশনের আগে ছয়টি কলব্যাক এবং তার পরে দুটি রয়েছে। ক্রমানুসারে, এগুলি হ'ল:
before_validation
before_validation_on_create
after_validation
after_validation_on_create
before_save
before_create
after_create
after_save
আপডেট ক্রিয়াকলাপগুলি ঠিক একই সেট রয়েছে, সর্বত্র update
পরিবর্তিত পড়ুন create
(এবং INSERT এর পরিবর্তে আপডেট )।
এ থেকে, আপনি দেখতে পাচ্ছেন যে বৈধতা before_save
এবং before_create
কলব্যাকের আগে সঞ্চালিত হয় ।
এর before_save
সামান্য আগে ঘটে before_create
। আমার জ্ঞানের সর্বোত্তম, তাদের মধ্যে কিছুই ঘটে না; তবে before_save
আপডেট ক্রিয়াকলাপগুলিতেও before_create
গুলি চালানো হবে , তবে কেবল ক্রিয়েটগুলিতেই আগুন লাগবে।
after_save
বা after_create
?
after_save
বা after_create
কলব্যাকে, self
রেকর্ডটি সবেমাত্র সংরক্ষিত ছিল, কারণ এটি সংরক্ষণের পরে উপস্থিত রয়েছে। অন্তর্ভুক্ত স্বতঃজেনারেট ক্ষেত্র চাই যে id
, created_at
, updated_at
।
before_create
একটি নতুন অবজেক্টটি ডাটাবেসে সংরক্ষণ করা বোঝায়, প্রকৃত create
পদ্ধতিটি বলা হচ্ছে না । সুতরাং, before_create
এখনও save
পদ্ধতি থেকে বরখাস্ত করা যেতে পারে ।
before_save
তৃতীয় এবং before_create
5 তম তালিকাভুক্ত করে ।
before_save
প্রতিবার কোনও বস্তু সংরক্ষণ করা হয়। নতুন এবং বিদ্যমান বস্তুর জন্য তাই। (ক্রিয়া তৈরি এবং আপডেট করুন)
before_create
শুধুমাত্র সৃষ্টির আগে। সুতরাং শুধুমাত্র নতুন বস্তুর জন্য (ক্রিয়া তৈরি করুন)
before_create
বনাম before_save :on => :create
কখনও কখনও আপনাকে কলব্যাকের ক্রমটি সম্পর্কে সতর্ক থাকতে হবে
এখানে আরো বিস্তারিত জানার জন্য দেখুন:
http://pivotallabs.com/activerecord-callbacks-autosave-before-this-and-that-etc/
before_save :on => :create
কাজ করে না (কমপক্ষে
before_save :generate_api_key, :if => :new_record?
before_validation_on_create
এবংafter_validation_on_create
এর পরিবর্তে যথাক্রমে বিকল্পbefore_validation
এবংafter_validation
যথাযথভাবে ব্যবহার করুন এবং রেল 3 হিসাবে সরানো হবে:on => :create
।