Как отсортировать строки в форме вложенного объекта в рельсах только для одного представления? - PullRequest
1 голос
/ 30 января 2010

При работе с вложенной моделью в форме существует ли способ сортировки вложенных моделей в представлении или в контроллере? Самый близкий ответ, который я смог найти, был здесь , но оба эти решения предполагают наложение порядка сортировки в модели. Я бы предпочел не менять принципиально такие вещи и оставить этот конкретный порядок сортировки на одной странице.

Ответы [ 2 ]

0 голосов
/ 30 января 2010

Размещение сортировки в моделях - абсолютно верный путь. Вы не должны иметь больше кода ruby, чем необходимо в самих представлениях, потому что гораздо сложнее проверить, что ваша сортировка работает так, как вы думаете.

Когда вы добавляете сортировку на уровне модели (и любой ответ в размещенной вами ссылке работает хорошо), вы можете добавить автоматизированный тест, чтобы убедиться, что на самом деле сортировка выполняется так, как вам нужно. Это бизнес-логика, и она принадлежит модели.

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

0 голосов
/ 30 января 2010

Вы всегда можете отсортировать по ruby: parent.children.sort{|a,b| a.field <=> b.field} или что-то в этом роде
Или вы можете добавить метод поиска в родительскую модель, например def self.find_ordered_by_field
Не могу придумать другие варианты ...

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