สมมุติว่าคุณมี 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
Discussion