Я прочитал этот вопрос об использовании функции "LOWER" для сортировки столбцов со смешанным регистром.Я хотел бы сделать что-то подобное, но с немного более сложным атрибутом.Во-первых, у меня есть базовое отношение «многие ко многим»:
class Project < ActiveRecord::Base
has_many :project_people
has_many :people, :through => :project_people
end
class ProjectPerson < ActiveRecord::Base
belongs_to :project
belongs_to :person
end
class Person < ActiveRecord::Base
has_many :project_people
has_many :projects, :through => :project_people
end
Я использую TS для индексации проектов:
class Project
define_index
indexes name, :sortable => true
indexes [people.first_name, people.last_name], :as => :person, :sortable => true
has created_at, category_id
set_property :delta => true
end
end
Это прекрасно индексирует, но потом я обнаружил, что у меня есть проблемакогда заглавные и строчные буквы используются в именах людей.Я попытался заменить вызов следующим:
has ["LOWER(people.first_name)", "LOWER(people.middle_name)", "LOWER(people.last_name)"], :as => :person, :type => :string
Но я продолжал получать ошибку при перестроении индекса:
ERROR: index 'project_core': sql_range_query: Unknown column 'people.first_name' in 'field list' (DSN=mysql://...).
Как я могу реализовать функцию "LOWER (...)"?Или мой актуальный вопрос.Как я могу проиндексировать это, чтобы иметь возможность сортировать проекты по полю человека и сделать его без учета регистра?