bir daha sağlam bir çözüm arel düğümleri kullanmaktır. Sonra Movie.for_title(title).order_by_title
listelenen diğer cevaplar üzerinde avantaj .for_title
ve .order_by_title
title
sütuna takma eğer kırılmaz olmasıdır veya çağrı
scope :order_by_title, -> {
order(arel_table['title'].lower.desc)
}
scope :for_title, (title)-> {
where(arel_table['title'].lower.eq title.downcase)
}
ve: Ben Movie
modeline birkaç kapsamları tanımlayan öneriyoruz title
sütunuyla başka bir tabloya katıl ve bunlar sql çıkışı.
rickypai mentioned gibi, sütun üzerinde bir diziniz yoksa, veritabanı yavaş olacaktır. Ancak, verilerinizi kopyalamak ve başka bir sütuna dönüşüm uygulamak için kötü (normal) formdur, çünkü bir sütun diğeriyle eşitlenemez. Maalesef, daha önceki mysql sürümleri, tetikleyiciler dışındaki birçok alternatives'a izin vermedi. 5.7.5'ten sonra bunu yapmak için sanal generated columns'u kullanabilirsiniz. Daha sonra, duyarsız durumlarda, sadece oluşturulan sütunu kullanırsınız (bu aslında ruby'yi daha da ileriye doğru yapar).
Postgres bu konuda biraz daha fazla esnekliğe sahiptir ve özel bir sütuna başvurmak zorunda kalmadan işlevler üzerinde dizinler oluşturmanıza izin verir veya sütunu büyük/küçük harf duyarlı olmayan bir sütun haline getirebilirsiniz.