BigBinary Blog

We write about Ruby on Rails, React.js, React Native, remote work, open source, engineering and design.

Rails 6 adds ActiveRecord::Relation#extract_associated

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.

Taha Husain in Rails 6
April 17, 2019

Subscribe to our newsletter