Rails: упорядочение через отношение has_one - PullRequest
1 голос
/ 24 февраля 2009

Я строю механизм сортировки столбцов в таблицах. Каждая таблица представляет собой список данных, поэтому я называю таблицу базы данных «списками». Все, кроме упорядочения колонок, работает. Я хочу отобразить позиции столбцов, упорядоченные по полю «позиция», но ничего не изменится, даже если я удалю оператор: order.

  • list.rb: has_many: столбцы
  • column.rb: has_one: columnposition,: order => "position ASC"
  • columnposition.rb <- Позиции хранятся здесь как простые целые числа. </li>

Я могу без проблем получить доступ к list.column.columnposition.position, поэтому сами отношения, похоже, работают.

Почему положения столбцов не упорядочены по "позиции ASC"?

// Редактировать: я получаю списки с помощью @lists = List.find: all

Ответы [ 2 ]

1 голос
/ 25 февраля 2009

Опция :order => "position ASC" не помогает на уровне определения вашего отношения, поскольку вы хотите упорядочить lists по позиции столбца, а не по самим позициям.

Удалите :order => "position ASC" из модели и попробуйте:

@lists = List.find(:all, :joins => { :columns => :column_positions }, \
  :order => 'column_positions.position ASC')

вместо этого. Посмотрите на сгенерированный SQL при работе в режиме development.

Cheers, V.

0 голосов
/ 24 февраля 2009

Я предполагаю, что выражение, которое вы пытаетесь заказать, является

list.column

И вы хотите, чтобы этот результат был упорядочен по позиции? Что ж, в этом случае запрос не «просматривает» ассоциацию столбца, поэтому он не учитывает ни одно из его: порядка (предложений).

Я не уверен, почему вам нужно сделать сопоставление столбцов своей собственной ассоциацией, тем более что у вас оно есть как: has_one, поэтому есть только 1 подходящая строка.

Я бы просто поместил эти данные о расположении столбцов в виде столбца в модели столбцов, а затем вы можете упорядочить их так, как вам нужно в вашем отдельном запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...