开发者

Sorting and manipulating a hash in Ruby

In my rails 3.1 project I have a Book model that has a ID, NAME, and BOOK_ORDER. I am using the ranked-mo开发者_StackOverflow社区del gem, which for its sorting process creates large numbers in the sorting(:book_order) column. Im looking for some help to create a method to sort all of the Books by the :book_order column, then simplify the :book_order numbers.

So, I have this:

controller

@books = Books.all

view

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

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

But want this:

view

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

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

Additionally, i don’t want to change the database entry, just use its current values to make simpler ones.

Thanks!


UPDATE:

Thanks to nash’s response I was able to find a solution:

In my Book Model I added the clean_book_order method:

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

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


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

EDIT:

Oh, I see. https://github.com/harvesthq/ranked-model/issues/10

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜