1

内部の作成時間を考慮して、固有のアクティビティによって最初の項目を取得する Rails ActiveRecord クエリを作成する際に問題が発生しています。また、含まれている理由である ItemStat で使用可能な値も必要です。

現在のメソッドの実装は機能していますが、不十分であり、最適化が必要です。

これは私のアナログモデルです:

アクティビティ:

class Activity < ActiveRecord::Base
  has_many :items
end

アイテム:

class Item < ActiveRecord::Base
  belongs_to :activity
  has_one :item_stat
end

アイテムステータス:

class ItemStat < ActiveRecord::Base
  belongs_to :item
end

現在の作業方法 (activities_id は、ユーザーが利用できるすべてのアクティビティです):

def self.first_items_by_unique_activity(activities_id, time_begin, time_end)
  items = Item.includes(:item_stat).where(:activity_id => activities_id, :created_at => time_begin..time_end)

  #make the first item unique by activity
  uniques = {}
  items.each do |item|
    identifier = item.activity_id
    uniques[identifier] = item if uniques[identifier].nil?
  end   

  uniques.values
end 

助けてくれてありがとう!

4

0 に答える 0