====== การใช้ชื่อแฝงสำหรับตารางและการทำงานกับการตั้งชื่อแบบเก่า ====== สมมุติว่าคุณมี User model ในแอพพลิเคชั่นของคุณ...โดยปกติแล้ว Rails จะมองหาตารางชื่อ "users" สำหรับโมเดลนี้ class User < ActiveRecord::Base end สมมุติด้วยว่าตารางเก็บผู้ใช้นี้ดันเป็นตารางเก่าในฐานข้อมูลเก่าที่มีชื่อว่า USER_DATA_TBL05 (ซึ่งเป็นชื่อที่น่าสะพรึ่งกลัว) คุณไม่สามารถเปลี่ยนชื่อตารางได้ เพราะว่ามีแอพพลิเคชั่นเก่าๆที่ใช้ตารางนี้อยู่ด้วย วิธีแก้ก็คือเพิ่มโค้ดนี้เข้าไปใน User model: class User < ActiveRecord::Base set_table_name 'USER_DATA_TBL05' # หรือ self.table_name='USER_DATA_TBL05' end โค้ดบรรทัดนี้จะบอกโมเดลให้ใช้ตารางชื่อ USER_DATA_TBL05 แทน นอกจากนั้น โดยปกติแล้ว Rails จะใช้คอลัมน์ชื่อ 'id' เป็นคีย์หลัก (primary key) แต่ว่าตารางเก่าของเรานี้กลับใช้คนละชื่อกัน (เช่น 'userID') สำหรับกรณีนี้คุณต้องเรียกใช้ method set_primary_key เพื่อเซ็ตคอลัมน์ที่เป็นคีย์หลักสำหรับโมเดล: class User < ActiveRecord::Base set_table_name 'USER_DATA_TBL05' set_primary_key 'userID' # หรือ self.primary_key = 'userID' end