考虑到内部创建时间,我在创建 Rails ActiveRecord 查询时遇到问题,该查询通过唯一 Activity 检索第一个项目。我还需要 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
感谢任何帮助!