如何通过属性总和对模型进行排序?

时间:2015-01-21 15:48:17

标签: ruby-on-rails ruby ruby-on-rails-3 sql-order-by

我有一个由序列化器代表的Artist模型

class ArtistSerializer < ActiveModel::Serializer
  attributes :id,
             :name,
             :followers_total_count

  def followers_total_count
    [
      object.facebook_like_count,
      object.soundcloud_like_count,
      object.instagram_like_count,
      object.twitter_like_count,
      object.mixcloud_like_count,
      object.youtube_like_count
    ].map(&:to_i).reduce(:+)
  end
end

如何按所有提供商的总和对Artist.all进行排序。

示例:

Artist1

  • facebook_like_count =&gt; 100
  • twitter_like_count =&gt; 50

Artist2

  • instagram_like_count =&gt; 20
  • twitter_like_count =&gt; 1000

顺序应为[Artist2,Artist1]

1 个答案:

答案 0 :(得分:0)

假设:followers_total_count是一个整数,你可以试试这个

Artist.order(:followers_total_count, :desc)