无论我尝试什么,我都无法通过标题进行排序。这是当前输出 - http://take.ms/M3W2Z,基本上A在N之后,B在A和N之后等等。
我的模特:
class Manufacturer < ApplicationRecord
has_many :products
end
class Product < ApplicationRecord
belongs_to :manufacturer
scope :by_alphabet, -> { order('title DESC' ) }
end
我的观点:
-@manufacturer.products.by_alphabet.each do |product|
=product.title
我试过scope :by_alphabet, -> { order('products.title DESC') }
,但它也没有帮助。
我错过了一些如此明显的东西吗?它只是一个简单的排序......或者它是关于西里尔字母的问题?我尝试用俄语字母对一个简单的数组进行排序 - 它就像一个魅力。
答案 0 :(得分:0)
在这种情况下,当数据库完成排序时,您需要为查询(使用collation
)或在表上(通过架构)设置COLLATE
)。默认的排序规则不太可能是西里尔字母的正确排序规则。您需要检查哪些归类可用于您的数据库,但是您可能可以摆脱类似这样的情况:
scope :by_alphabet, -> { order('title DESC COLLATE utf8_ru_ci' ) }
有关所有详细信息,请咨询您正在使用的数据库的文档,因为每个数据库的信息可能略有不同。