排序包含ruby/rails中的数字的字符串

Luk*_*ann 8 ruby string integer ruby-on-rails-3

我想根据他们有多少facebook喜欢对我的所有位置进行排序.但facebook_likes不是integer,它是一个string.

这是我使用的rails代码: @locations = Location.order("facebook_likes ASC").all

现在我得到这样的东西:

  • 10
  • 100
  • 201
  • 2
  • 304
  • 400000
  • 50
  • ...

如何根据值进行排序,以便签到次数最多的位置位于顶部.从一开始就使用字符串而不是整数来解决这个问题吗?

谢谢你的帮助!

rub*_*nce 9

@locations = Location.all.sort { |a, b| b.facebook_likes.to_i <=> a.facebook_likes.to_i }
Run Code Online (Sandbox Code Playgroud)

要么

@locations = Location.all.sort_by { |a| -(a.facebook_likes.to_i) }
Run Code Online (Sandbox Code Playgroud)