Back to Blog

Rails 6 adds ActiveRecord::Relation#extract_associated

on April 17, 2019
This blog is part of our Rails 6 series.

Rails 6.0 was recently released.

Before Rails 6, if we want to extract associated records from an ActiveRecord::Relation, we would use preload and collect.

For example, we want to fetch subscriptions of some users. The query would look as shown below.

Rails 5.2

1User.where(blocked: false).preload(:subscriptions).collect(&:subscriptions)
3=> # returns collection of subscription records

ActiveRecord::Relation#extract_associated provides a shorthand to achieve same result and is more readable than former.

Rails 6.0.0.beta3

1User.where(blocked: false).extract_associated(:subscriptions)
3=> # returns the same collection of subscription records

Here's the relevant pull request for this change.

You might also like

If you liked this blog post, check out similar ones from BigBinary