在Ruby中对哈希进行排序和操作

时间:2011-09-23 16:09:31

标签: ruby ruby-on-rails-3

在我的rails 3.1项目中,我有一个具有ID,NAME和BOOK_ORDER的Book模型。我正在使用ranked-model gem,它的排序过程会在排序(:book_order)列中创建大数字。我正在寻找一些帮助来创建一个方法来通过:book_order列对所有书籍进行排序,然后简化:book_order数字。

所以,我有这个:

控制器

@books = Books.all

视图

<% @books.each do |book| %>
 <%= book.book_order %>
<% end %> 

# book1.book_order => 1231654
# book2.book_order => 9255654
# book3.book_order => 1654

但是想要这个:

视图

<% @books.each do |book| %>
 <%= book.clean_book_order %>
<% end %> 

# book1.clean_book_order => 2
# book2.clean_book_order => 3
# book3.clean_book_order => 1

此外,我不想更改数据库条目,只需使用其当前值来制作更简单的条目。

谢谢!


更新:

感谢纳什的回应,我找到了一个解决方案:

在我的图书模型中,我添加了clean_book_order方法:

class Book < ActiveRecord::Base     
  include RankedModel
  ranks :book_order 

  def clean_book_order
    self.class.where("book_order < ?", book_order).count + 1
  end
end  

1 个答案:

答案 0 :(得分:1)

<% @books.each do |book| %>
 <%= book.book_order_position %>
<% end %> 

编辑:

哦,我明白了。 https://github.com/harvesthq/ranked-model/issues/10