Translations of this page?:

การใช้ชื่อแฝงสำหรับตารางและการทำงานกับการตั้งชื่อแบบเก่า

สมมุติว่าคุณมี 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
 
th/howtos/db-relationships/table-aliasing.txt · แก้ไขครั้งล่าสุด: 2009/10/01 08:40 โดย sukit
 
Recent changes RSS feed Creative Commons License