Ruby on rails Rails没有按(西里尔字母)字母表对子元素进行排序

Ruby on rails Rails没有按(西里尔字母)字母表对子元素进行排序,ruby-on-rails,collation,Ruby On Rails,Collation,不管我怎么做,我都无法按标题进行排序。这是电流输出-,基本上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 我试过sco

不管我怎么做,我都无法按标题进行排序。这是电流输出-,基本上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
我试过scope:by_alphabet,->{order'products.title DESC'},但也没用


我错过了这么明显的东西吗?这只是一个简单的分类。。。还是关于西里尔字母的问题?我试着用俄语字母对一个简单数组进行排序,它的效果非常好。

@manufacturer.products.sort_by&:title

@manufacturer.products.sort_by&:title

当数据库完成排序时,就像在本例中一样,您需要使用COLLATE关键字为查询设置排序规则,或者通过模式在表上设置排序规则。对于西里尔文,默认排序规则可能不正确。您需要检查您的数据库有哪些排序规则可用,但您可能可以通过以下方式逃脱:

scope :by_alphabet, -> { order('title DESC COLLATE utf8_ru_ci' ) }

有关完整详细信息,请参阅所使用数据库的文档,因为每个数据库的排序可能略有不同。

当数据库完成排序时(如本例中),您需要使用COLLATE关键字为查询设置排序规则,或通过架构在表上设置排序规则。对于西里尔文,默认排序规则可能不正确。您需要检查您的数据库有哪些排序规则可用,但您可能可以通过以下方式逃脱:

scope :by_alphabet, -> { order('title DESC COLLATE utf8_ru_ci' ) }

有关详细信息,请参阅所使用数据库的文档,因为每个数据库的编码可能略有不同。

表中字段的编码和排序是什么?如果我没有正确查找:Manufacturer.findmoroshka-sladkaya-6m.products.first.title.encoding Manufacturer Load 0.2ms选择manufacturers.*从manufacturers.slug=$1限制$2[[slug,moroshka-sladkaya-6m],[LIMIT,1]]产品负载0.3ms选择产品。*从产品中选择产品。制造商id=$1按产品订购。id ASC限制$2[[manufacturer_id,2],[LIMIT,1]]=>表中字段的编码和排序是什么?如果我查对了:Manufacturer.findmoroshka-sladkaya-6m.products.first.title.encoding Manufacturer Load 0.2ms选择制造商。*来自manufacturers.slug=$1 LIMIT$2[[slug,moroshka-sladkaya-6m],[LIMIT,1]]产品负载0.3ms选择产品。*从产品中选择产品。制造商id=$1按产品订购。id ASC限制$2[[制造商id,2],[限制,1]]=>我回到问题上来,找到了我自己以前删除过的答案。我记不起为什么会发生这种情况,但这对我来说又起作用了!我建议你对你的答案添加更多解释。它被删除是因为它被视为低质量/不是答案。人们不知道你是否是专家,所以他们会做出判断根据帖子内容。我回到了问题,找到了我自己以前删除的答案。我记不起为什么会发生这种情况,但这对我来说又起作用了!我建议你对你的答案添加更多解释。它被删除是因为它被视为低质量/不是答案。人们不知道你是否是专家,所以他们会根据帖子内容来判断。