Ruby on rails Rails:ActiveRecord不区分大小写,使用动态表名排序?

Ruby on rails Rails:ActiveRecord不区分大小写,使用动态表名排序?,ruby-on-rails,ruby,sorting,activerecord,case-insensitive,Ruby On Rails,Ruby,Sorting,Activerecord,Case Insensitive,[]显示如何使用ActiveRecord执行不区分大小写的排序 我正在使用的代码要求将列名表示为符号,以便ActiveRecord将自动将其扩展到“表”“列”。这是必需的,因为某些查询包含具有不明确列名的join语句 该表不能硬编码到方法中,因为它是一个用于多个不同表的抽象类 有没有办法像ActiveRecord那样获取表名? scope :order_name_asc, -> { reorder(%Q{LOWER("#{???}"."name") ASC}) } scope :ord

[]显示如何使用ActiveRecord执行不区分大小写的排序

我正在使用的代码要求将列名表示为符号,以便ActiveRecord将自动将其扩展到
“表”“列”
。这是必需的,因为某些查询包含具有不明确列名的join语句

该表不能硬编码到方法中,因为它是一个用于多个不同表的抽象类

有没有办法像ActiveRecord那样获取表名?

scope :order_name_asc, -> { reorder(%Q{LOWER("#{???}"."name") ASC}) }
scope :order_name_desc, -> { reorder(%Q{LOWER("#{???}"."name") DESC}) }
有没有办法同时使用符号列名和
LOWER
并让ActiveRecord扩展表名?

scope :order_name_asc, -> { reorder(%Q{LOWER("#{???}"."name") ASC}) }
scope :order_name_desc, -> { reorder(%Q{LOWER("#{???}"."name") DESC}) }

编辑:修复了上一个示例中使用反勾号而不是双引号的打字错误。

ActiveRecord为模型提供了方法

所以


谢谢你的快速回复。我试过了,但它导致记录不再按名称排序。我想有些事情我还不完全明白。我将尝试调试并确定要解决的值
表\u name
。我发现了问题。我正在使用backticks,它在ruby中执行系统调用!我脑子里有ES6。谢谢你的帮助@JaredDeckard哇,真糟糕,我没注意到。好球!我在问题中添加了一个编辑。如果您能为未来的旅行者更新您的答案,我们将不胜感激。@JaredDeckard我将在大约30分钟内靠近笔记本电脑,并确保编辑,当然!
scope :order_name_asc, -> { reorder(%Q{LOWER("#{???}"."name") ASC}) }
scope :order_name_desc, -> { reorder(%Q{LOWER("#{???}"."name") DESC}) }
class User < ActiveRecord::Base
end
User.table_name
#=> "users"
scope :order_name_asc, -> { reorder(%Q{LOWER("#{table_name}"."name") ASC}) }