You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We're using datagrid gem together with draper decorators.
They works very well so far, until recently datagrid introduces preload feature, where it actively preloads associations when rendering a ActiveRecord resource.
To fix this breaking change, we have to implement #preload in our Draper::CollectionDecorator subclasses:
class MyCollectionDecorator < Draper::CollectionDecorator
def preload(*args)
object.preload(*args).decorate
end
end
I wonder if it makes sense to move this #preload implementation into Draper::CollectionDecorator?
What do you all think?
The text was updated successfully, but these errors were encountered:
I've seen a few issues related to this functionality. Let me look into those and get back to you. At first glance I don't see a problem with adding this functionality, but I'll want to get a little more context before I give you a full answer.
## Description
Include all QueryMethods from the ORM in CollectionDecorator. The default adapter is :active_record
* Why was this change required?
It was necessary to delegate or define a method of the ORM which you are using in your decorator to make an instance of CollectionDecorator able to call it.
* Is there something you aren't happy with or that needs extra attention?
In order to support other ORM associations, we'll need to write a method `allowed?` for each strategy at `lib/draper/query_methods/load_strategy.rb`
## Testing
1. Create a decorator for the model and its association
```ruby
class OrderHistoryDecorator < Draper::Decorator
delegate_all
end
class OrderDecorator < Draper::Decorator
delegate_all
decorates_association :order_histories, with: OrderHistoryDecorator
end
```
2. Call any query method in the decorated instance
```ruby
pry(main)> Order.last.decorate.order_histories.includes(:user)
```
## References
* Issue #702
* Issue #812
We're using datagrid gem together with draper decorators.
They works very well so far, until recently datagrid introduces preload feature, where it actively preloads associations when rendering a ActiveRecord resource.
To fix this breaking change, we have to implement
#preload
in ourDraper::CollectionDecorator
subclasses:I wonder if it makes sense to move this
#preload
implementation intoDraper::CollectionDecorator
?What do you all think?
The text was updated successfully, but these errors were encountered: