在我的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
答案 0 :(得分:1)
<% @books.each do |book| %>
<%= book.book_order_position %>
<% end %>
编辑: