0
我跟着這個(https://robots.thoughtbot.com/active-record-eager-loading-with-query-objects-and-decorators)教程來構建我的查詢對象,但是如何從結果中訪問我的商店數據?如何從我的Rails查詢對象訪問數據?
我獲得以下對象與我去結果= StoreWithRecentDeals.new(店:Store.all)
查詢對象https://gist.github.com/jianbo/4125f3203005358e99f5
話,我想我的商店和交易數據出這個對象的時候我去result.stores我得到 引發ArgumentError:錯誤的參數數目(2 1)
這是我的代碼
class StoreWithRecentDeals
def initialize(stores:)
@stores = stores.order(created_at: :desc).limit(5)
@deal_cache = build_deal_cache
end
def stores
@stores.map { |store| StoreWithLatestDeals.new(store, @deal_cache) }
end
private
def build_deal_cache
deals.group_by(&:store_id)
end
def deals
Deal.
select("*").
from(Arel.sql("(#{ranked_deals_query}) AS ranked_deals")).
where("deal_rank <= 3")
end
def ranked_deals_query
Deal.where(store_id: @stores.map(&:id)).select(<<-SQL).to_sql
deals.*,
dense_rank() OVER (
PARTITION BY deals.store_id
ORDER BY deals.created_at DESC
) AS deal_rank
SQL
end
end
class StoreWithLatestDeals < SimpleDelegator
def initialize(store, deals_by_store_id)
super(store)
@deals_by_store_id = deals_by_store_id
end
def latest_deals
@deals_by_store_id[id] || []
end
end