результаты паттернов с использованием «find» в Rails - PullRequest
0 голосов
/ 25 октября 2010

Это мой текущий код

@descriptions = TableName.find(:first, :conditions=> ["table_id = ?", table_name.table_id], :order => 'author_year')

author_year столбец содержит данные

Каннан 1845

Колун 1976

Палани, 1956

Используя приведенный выше код, он дает результат в порядке author_year на основе имен авторов. Мне нужно заказать запрос по возрастанию на основе года, который представлен в author_year. и я хочу напечатать самые старые данные, основанные на годе, не упорядоченном по имени автора. Пожалуйста, дайте мне несколько советов по этому вопросу.

1 Ответ

1 голос
/ 25 октября 2010

Вариант 1: хранить в формате «год автора» вместо

Вариант 2: сохранить автора и год в разных столбцах и отсортировать по году

Вариант 3: добавить столбец "год" и сделать:

В консоли (рельсы 2.X не так ли?):

script/generate migration add_author_yr_to_table_name author_yr:integer

(Убедитесь, что у вас есть миграция, которая содержит что-то вроде: add_column: table_names,: author_yr,: integer)

Миграция БД:

rake db:migrate

В вашем файле table_name.rb (TableName - это имя класса, верно?):

before_save :extract_year

def extract_year
  self.year = author_year.last(4)
end

А потом сортировать по "году"

Отредактировано, чтобы объяснять шаг за шагом.

...