ตัวอย่างของสิ่งที่ฉันพูดถึง:
class Person < ActiveRecord::Base
def name=(name)
super(name.capitalize)
end
def name
super().downcase # not sure why you'd do this; this is just an example
end
end
ดูเหมือนว่าจะใช้งานได้ แต่ฉันเพิ่งอ่านหัวข้อเกี่ยวกับวิธีการแทนที่คุณลักษณะในActiveRecord :: Base docsและแนะนำให้ใช้read_attribute
และwrite_attribute
วิธีการ ฉันคิดว่าต้องมีบางอย่างผิดปกติกับสิ่งที่ฉันทำในตัวอย่างด้านบน มิฉะนั้นเหตุใดพวกเขาจึงอวยพรวิธีเหล่านี้ในฐานะ "วิธีที่ถูกต้อง" เพื่อแทนที่วิธีการของแอตทริบิวต์ พวกเขายังบังคับสำนวนที่ขี้เหร่มากดังนั้นต้องมีเหตุผลที่ดี ...
คำถามจริงของฉัน: มีบางอย่างผิดปกติกับตัวอย่างนี้หรือไม่?