Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
এ দু'টিই স্পষ্টভাবে আপডেট করতে এআরকে না বলে কোনও অবজেক্ট আপডেট করবে।
রেলস এপিআই বলেছেন:
আপডেট_ট্রিবিউটের জন্য
একটি একক অ্যাট্রিবিউট আপডেট করে এবং সাধারণ বৈধকরণ প্রক্রিয়া ছাড়াই রেকর্ডটি সংরক্ষণ করে। এটি বিদ্যমান রেকর্ডে বুলিয়ান পতাকাগুলির জন্য বিশেষত কার্যকর। বেইজে নিয়মিত আপডেট_ট্রিবিউট পদ্ধতিটি বৈধকরণ মডিউলটিতে মিশ্রিত হলে এটি এর সাথে প্রতিস্থাপিত হয় যা এটি পূর্বনির্ধারিত।
আপডেট_অ্যাট্রিবিউটের জন্য
পাস-হ্যাশ থেকে সমস্ত বৈশিষ্ট্য আপডেট করে এবং রেকর্ডটি সংরক্ষণ করে। যদি অবজেক্টটি অবৈধ হয় তবে সংরক্ষণ ব্যর্থ হবে এবং মিথ্যাটি ফিরে আসবে।
সুতরাং আমি যদি অবজেক্টটি বৈধ করতে চাই না তবে আমার আপডেট_ট্রিবিউট ব্যবহার করা উচিত। আমার যদি এই আপডেটটি একটি পূর্ববর্তী সংরক্ষণে থাকে তবে তা কি স্ট্যাকওভারফ্লো হবে?
আমার প্রশ্নটি হল আপডেট_ট্রিবিউটে সংরক্ষণ বা কেবলমাত্র বৈধতার আগে বাইপাস করা।
এছাড়াও, আপডেট_অ্যাট্রিবিউটে একটি হ্যাশ পাস করার সঠিক বাক্য গঠন কী ... উপরে আমার উদাহরণটি দেখুন।
before_save
কলব্যাকের মধ্যে সেট করা আছে )। Fe পরিবর্তে update_attribute(:discount, 0.1) if amount > 100
আপনি করতে পারেন discount = 0.1 if amount > 100
। অবজেক্টকে update_attribute
কল save
করে, যা এই ক্ষেত্রে অপ্রয়োজনীয়, যেহেতু বিবৃতিটি before_save
কলব্যাকের অভ্যন্তরে রয়েছে এবং যাইহোক সেভ হবে। আমি আশা করি যে এটি উপলব্ধি করে।
update_attribute
একটিbefore_save
কলব্যাকের ভিতরে একটি বিবৃতি রাখতে চান ? আমি এর কোনও ভাল কারণ ভাবতে পারি না।