Sebenarnya ada banyak cara untuk melakukannya dengan menggunakan Active Record. Salah satu yang belum disebutkan di atas akan menjadi (dalam berbagai format, semuanya valid):
Model.order(foo: :asc).order(:bar => :desc).order(:etc)
Mungkin lebih bertele-tele, tetapi secara pribadi saya merasa lebih mudah untuk mengaturnya. SQL diproduksi hanya dalam satu langkah:
SELECT "models".* FROM "models" ORDER BY "models"."etc" ASC, "models"."bar" DESC, "models"."foo" ASC
Jadi, untuk pertanyaan awal:
Model.order(:updated_at).order(:price)
Anda tidak perlu mendeklarasikan tipe data, ActiveRecord melakukannya dengan lancar, begitu juga DB Engine Anda
:order => ["DATE(#{table_name}.updated_at)", :price]
(Perhatikan bahwa itu:price
adalah simbol.)