README.md in n1_loader-1.3.0 vs README.md in n1_loader-1.4.0

- old
+ new

@@ -186,25 +186,29 @@ ```ruby class User include N1Loader::Loadable - n1_optimized :orders_count do |users, type| - orders_per_user = Order.where(type: type, user: users).group(:user_id).count - - users.each { |user| fulfill(user, orders_per_user[user.id]) } + n1_optimized :orders_count do + argument :type + + def perform(users) + orders_per_user = Order.where(type: type, user: users).group(:user_id).count + + users.each { |user| fulfill(user, orders_per_user[user.id]) } + end end end user = User.new -user.orders_count(:gifts) # The loader will be performed first time for this argument -user.orders_count(:sales) # The loader will be performed first time for this argument -user.orders_count(:gifts) # The cached value will be used +user.orders_count(type: :gifts) # The loader will be performed first time for this argument +user.orders_count(type: :sales) # The loader will be performed first time for this argument +user.orders_count(type: :gifts) # The cached value will be used users = [User.new, User.new] N1Loader::Preloader.new(users).preload(:orders_count) -users.map { |user| user.orders_count(:gifts) } # No N+1 here +users.map { |user| user.orders_count(type: :gifts) } # No N+1 here ``` _Note_: By default, we use `arguments.map(&:object_id)` to identify arguments but in some cases, you may want to override it, for example: @@ -215,20 +219,20 @@ n1_optimized :orders_count do argument :sale cache_key { sale.id } - def perform(users, sale) + def perform(users) orders_per_user = Order.where(sale: sale, user: users).group(:user_id).count users.each { |user| fulfill(user, orders_per_user[user.id]) } end end end user = User.new -user.orders_count(Sale.first) # perform will be executed and value will be cached -user.orders_count(Sale.first) # the cached value will be returned +user.orders_count(sale: Sale.first) # perform will be executed and value will be cached +user.orders_count(sale: Sale.first) # the cached value will be returned ``` ## Integrations \ No newline at end of file