2015-07-20 3 views
0

Я хотел бы отобразить список фаз из проекта. Для этого я загружаю все этапы в контроллеререльсы - упорядочить все элементы по атрибуту

def load_project 
    @project = Project.find params[:id] 
    @phases = @project.phases 
end 

Тогда я иду через @phases используя каждую функцию в Haml

- @phases.each do |phase| 
    %tr ... 

Проблема заключается в том, что запрос SQL из предыдущего кода не имеет любой атрибут заказа, поэтому это по умолчанию порядок по id.

SELECT `phases`.* FROM `phases` WHERE `phases`.`project_id` = 123 

Я хотел бы заказать этот запрос по атрибуту фазы, который называется «позиция». Можно ли добавить опцию заказа?

ответ

1

project.rb

has_many :phrases, order: 'phrases.column_name' 

Так что это будет заказать все фразы вашего проекта с column_name вы указали

Вы можете сделать это, если вы хотите, по умолчанию должно быть заказано

+0

Я не знал, что вы можете добавить заказ модели, thanx :) Просто примечание, порядок выглядит устаревшим в rails 4, вместо этого следует использовать блок видимости: http://stackoverflow.com/a/18284635/3703099 – Luckyn

1

Вы можете добавить order в контроллере, или с точки зрения

def load_project 
    @project = Project.find params[:id] 
    @phases = @project.phases.order(:position) 
end 

Или

- @phases.order(:position).each do |phase| 
    %tr ... 
+0

Спасибо за синтаксис, но я буду использовать редактирование модели @test, поэтому мне не нужно думать о добавление порядка каждый раз :) – Luckyn

1

попробовать этот

@phases = @project.phases.order("position ASC") 

достаточно добавить объем модельным фаз, как это

scope :ordered, order: "position ASC" 

и называют этот способ

@phases = @project.phases.ordered 
Смежные вопросы