Ruby on rails 当有重音符号时,按字母顺序对activerecord进行不区分大小写的排序

Ruby on rails 当有重音符号时,按字母顺序对activerecord进行不区分大小写的排序,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,这是我正在使用的一个模型 class WorkPost < ActiveRecord::Base default_scope -> { order(:label) } end 但是,我希望字母顺序考虑到É,并且不区分大小写。但是,我需要返回如下内容: WorkPost.pluck(:label) => ["Chanteur", "Économiste", "responsable du recrutement",

这是我正在使用的一个模型

class WorkPost < ActiveRecord::Base
  default_scope -> { order(:label) }
end
但是,我希望字母顺序考虑到É,并且不区分大小写。但是,我需要返回如下内容:

WorkPost.pluck(:label)
=> ["Chanteur", "Économiste", "responsable du recrutement", "Vétérinaire"]

我希望在ActiveRecord级别执行此操作,以获得良好的性能。

您可以通过小写标签将默认范围更改为order:

default_scope order: 'lower(label)'
或者您可以使用大写:

default_scope order: 'upper(label)'

希望这有帮助

您可以将默认范围更改为按小写标签排序:

default_scope order: 'lower(label)'
或者您可以使用大写:

default_scope order: 'upper(label)'

希望这有助于

为了解决案例问题,我们可以使用LHH的解决方案

但是,为了解决重音问题,我们可以使用PostgreSQL扩展模块

要安装它,请执行以下操作:

class AddUnaccentToPostgres < ActiveRecord::Migration[5.2]
  def change
    enable_extension "unaccent"
  end
end

为了解决案例问题,我们可以使用LHH的解决方案

但是,为了解决重音问题,我们可以使用PostgreSQL扩展模块

要安装它,请执行以下操作:

class AddUnaccentToPostgres < ActiveRecord::Migration[5.2]
  def change
    enable_extension "unaccent"
  end
end

如果要在活动记录级别执行,那么应该在数据库级别执行。在这种情况下,值得一提的是您使用的是哪个数据库,以及您选择的存储选项(如果有的话)。您好,我使用的是postegresql,Unicode编码如果要在活动记录级别上进行编码,那么应该在数据库级别上进行。在这种情况下,值得一提的是您使用的是哪个数据库,以及您选择的存储选项(如果有的话)。您好,我使用的是postegresql,Unicode编码。这确实更好,它解决了我的案例问题,但并不能解决我的口音问题。我有=>[Chanteur,Responsible du Recruement,Vétérinaire,ÉEconomiste]Witch离我更近,但不是我想要的。这确实更好,它解决了我的案件问题,但它没有解决我处理口音的问题。我有=>[Chanteur,Responsible du Recruement,Vétérinaire,ÉEconomiste]女巫离我更近了,但不是我想要的。