У меня есть модель ActiveRecord с полем с именем name
(в базе данных) и методом с именем collation_name
(не в базе данных), который возвращает сокращенную версию имени. Класс модели похож на это:
class Foo < ActiveRecord::Base
# ... other stuff ...
def collation_name
words = name.downcase.split
if words[0] == 'the'
words.shift
end
words.join(' ')
end
end
Мое приложение используется для экспорта базы данных приложения во вторую базу данных, содержащую денормализованную версию данных, включая collation_name
в качестве реального столбца. Я хотел бы использовать collation_name
, чтобы упорядочить записи для отображения в представлениях приложения. Я попытался Foo.all(:order=>:collation_name)
, но получил ошибку «нет такого столбца: имя_связи».
Как получить список Foo
записей, упорядоченных по collation_name
? Нужно ли добавлять collation_name
в качестве реального столбца в базе данных приложения для ActiveRecord, чтобы увидеть его при заказе? Должен ли я отсортировать код приложения после того, как ActiveRecord вернул результаты?