В моей таблице у меня есть поля first_name, middle_name и last_name. Я хочу показать как First_name Middle_name Last_name в алфавитном порядке. Для некоторых записей имя first_name может быть пустым, для некоторых записей last_name может быть пустым, для некоторых записей среднее имя может быть пустым. Если first_name blank должно показывать среднее имя и last_name, если для среднего_имя должно быть имя и фамилия, если last_name blank должно показывать первое и второе имя. В финале я хочу показать список в алфавитном порядке. Как я хочу подходить к этой проблеме?Howe do Sort in ruby
-3
A
ответ
0
Возможное решение в вашем случае.
Вы должны обнаружить первый non blank
атрибут:
class YourModel < ActiveRecord::Base
def representation
[first_name, middle_name, last_name].detect{ |r| r.present? }.downcase
end
end
Fetch объекты:
@objects = YourModel.all
Сортировать объекты:
@objects.sort! { |a,b| a.representation <=> b.representation }
Метод present?
доступен начиная с Rails 2.2.1
версии.
http://apidock.com/rails/v2.2.1/Object/present%3F
Соответственно для обсуждения в комментариях: present?
такая же, как !blank?
.
# File activesupport/lib/active_support/core_ext/object/blank.rb, line 19
def present?
!blank?
end
blank?
является псевдонимом empty?
.
def empty?
all? { |k, v| v && v.empty? && !v.is_a?(String) }
end
Смежные вопросы
- 1. oracle different do sort
- 2. Что такое? operator do in Ruby
- 3. Sort Integer Array Ruby
- 4. sort импортированный файл ruby
- 5. Повторное использование .sort в ruby
- 6. ruby sort array массива
- 7. Array Sort in C
- 8. Bubble Sort in Assembly
- 9. Radix Sort in C++
- 10. sort() function in IE
- 11. using -sort in linux
- 12. quick sort in C++
- 13. std :: sort in C++?
- 14. Tie-break in sort
- 15. sort() function in C++
- 16. Несколько Sort in List.js
- 17. Array sort in PHP
- 18. quick sort in C
- 19. Natural Sort in NHibernate
- 20. merge sort in python
- 21. Merge sort in Haskell
- 22. Bubble Sort in C
- 23. Secondary Sort in Hadoop
- 24. Bubble sort in NSMutableArray
- 25. Bubble sort in R
- 26. folder sort in jtree
- 27. Custom sort in C++
- 28. Do $ sort works for sub array document
- 29. 2d Array Sort in Haskell
- 30. Различное поведение «do .. end» и «{..}» block in ruby
Вы говорите об простых Ruby или RubyOnRails (ваша таблица моделируется классом ActiveRecord)? –
Да, мой стол моделируется классом ActiveRecord – vinothini
Алфавитный порядок на основе чего? –