ในแอป Ruby on Rails ของฉัน ฉันมีโมเดล Message
ที่มีคอลัมน์ created_at
และคอลัมน์ status_updated_at
ทั้งคู่เป็นวันที่และเวลา
เพื่อเร่งการสืบค้นเช่น Message.where(status: 'delivered', account_id: 11).where('status_updated_at - created_at >= ?', "180 seconds")
ฉันต้องการเพิ่มดัชนีให้กับความแตกต่างระหว่างคอลัมน์ status_updated_at
และ created_at
ฉันได้ลองใช้รหัสนี้แล้ว:
class AddMessageIndicesForDashboard < ActiveRecord::Migration[5.1]
def change
add_index :messages, [:status, :account_id, :created_at, "(status_updated_at-created_at)"], name: 'dashboard_delivery_time_index'
end
end
ซึ่งส่งผลให้ PG::UndefinedColumn: ERROR: column "status_updated_at-created_at" does not exist
น่าแปลกที่ถ้าฉันเพียงต้องการเพิ่มดัชนีไปที่ status_udpated_at - created_at
โดยทำ add_index :messages, "(status_updated_at-created_at)", name: 'dashboard_delivery_time_index'
มันจะได้ผล
มีข้อเสนอแนะอะไรบ้าง? ขอบคุณ!