রেলগুলি 5.1+
class Page < ActiveRecord::Base
before_save :do_something, if: :will_save_change_to_status_id?
private
def do_something
end
end
অ্যাক্টিভেকর্ডকে পরিবর্তন করেছে যে প্রতিশ্রুতি :: নোংরা এখানে: https://github.com/rails/rails/commit/16ae3db5a5c6a08383b974ae6c96faac5b4a3c81
এই পরিবর্তনগুলি সম্পর্কে এখানে একটি ব্লগ পোস্ট রয়েছে: https://www.ombulabs.com/blog/rails/upgrades/active-record-5-1-api-changes.html
অ্যাক্টিভেকর্ড :: আমার 5 টি রেলের জঞ্জাল পরিবর্তনগুলি সম্পর্কে আমি নিজের জন্য সংক্ষিপ্তসারটি এখানে দিয়েছি:
অ্যাক্টিভেকর্ড :: নোংরা
https://api.rubyonrails.org/classes/ActiveRecord/AtributeMethods/Dirty.html
সংরক্ষণের আগে (বিকল্প পরিবর্তন)
কোনও বস্তুটি সংশোধন করার পরে এবং ডাটাবেসে সংরক্ষণ করার আগে বা before_save
ফিল্টারের মধ্যে:
changes
এখন করা উচিত changes_to_save
changed?
এখন করা উচিত has_changes_to_save?
changed
এখন করা উচিত changed_attribute_names_to_save
<attribute>_change
এখন করা উচিত <attribute>_change_to_be_saved
<attribute>_changed?
এখন করা উচিত will_save_change_to_<attribute>?
<attribute>_was
এখন করা উচিত <attribute>_in_database
সংরক্ষণের পরে (পরিবর্তন পরিবর্তন করুন)
কোনও বস্তুটি সংশোধন করার পরে এবং ডাটাবেসে সংরক্ষণ করার পরে, বা after_save
ফিল্টারের মধ্যে:
saved_changes
(প্রতিস্থাপন previous_changes
)
saved_changes?
saved_change_to_<attribute>
saved_change_to_<attribute>?
<attribute>_before_last_save
রেল <= 5.0
class Page < ActiveRecord::Base
before_save :do_something, if: :status_id_changed?
private
def do_something
end
end
এটি কল্যাকব্যাকটি কোনও before_save
শর্ত অনুসারে একটি পদ্ধতির কলের রিটার্ন মানের উপর ভিত্তি করে কার্যকর করতে পারে তা ব্যবহার করে । status_id_changed?
পদ্ধতি থেকে আসে ActiveModel :: ডার্টি , যা একটি নির্দিষ্ট বৈশিষ্ট্য কেবল সংযোজন করে পরিবর্তিত হয়েছে যদি আমাদের চেক করতে পারবেন _changed?
অ্যাট্রিবিউট নাম।
do_something
পদ্ধতিটি কখন ডাকা উচিত তা আপনার প্রয়োজনের উপর নির্ভর করে। এটি হতে পারে before_save
বা after_save
কোনও নির্ধারিত অ্যাক্টিভেকর্ড :: কলব্যাকস হতে পারে ।