Мой сценарий выглядит следующим образом
Компания has_many покупает как полиморфные отношения
Пользователь has_many покупает как полиморфные отношения
Примечание: между пользователями и компаниями нет никаких отношений
Покупка относится к полиморфизму
Покупка has_many предметов
Пользователь has_many предметов посредством покупок
Код мудрый
class User
has_many :purchases, as: :purchasable, dependent: :destroy
has_many :items, through: :purchases
end
class Purchase
belongs_to :purchasable, polymorphic: true
has_many :items, dependent: :destroy
end
class Item
belongs_to :purchase
end
Вопрос 1: Чтоподходит ли индексирование для User.first.items
?
Вопрос 2: Я хочу найти самые последние приобретенные товары, сгруппировав их по категориям товаров.Какова наиболее эффективная индексация / arel / sql для этого?Текущий, и я уверен, что неэффективный, код для этого выглядит следующим образом
class User
def most_recent_items
item_ids = Item.select("MAX(id) AS id").group(:category, :puchase_id).collect(&:id) & items.collect(&:id)
Item.order("created_at DESC").where(:id => item_ids)
end
end