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