1

以下は、トランザクションとユーザーに関して top_spenders を見つけるための「ホテル」モデルのメソッドです。

def top_spenders
    top_spenders = []
    self.transactions.group(:user_id).sum(:amount, :order => 'SUM(amount) DESC', :limit => 5).each do |record|
        person = User.find(record.first).name 
        amount = record.second
        person_amount = [person, amount]
        top_spenders << person_amount
    end 
    top_spenders
end

### hotel.rb
    has_many :transactions

### transaction.rb
    belongs_to :user
    belongs_to :hotel

非推奨の警告を表示する行は次のとおりです。

self.transactions.group(:user_id).sum(:amount, :order => 'SUM(amount) DESC', :limit => 5)

非推奨の警告は次のとおりです。

DEPRECATION WARNING: Relation#calculate with finder options is deprecated. Please build a scope and then call calculate on it instead. (called from top_spenders ...
DEPRECATION WARNING: The :distinct option for `Relation#count` is deprecated. Please use `Relation#distinct` instead. (eg. `relation.distinct.count`). (called from top_spenders ...

グループ化されたトランザクションのスコープを追加してから、合計をクエリしようとしましたが、それでも警告は持続しました。また、他の方法をいくつか試しましたが、要件が満たされた状態で廃止を回避できませんでした。

どんな助けでも大歓迎です。

4

1 に答える 1