We write about Ruby on Rails, React.js, React Native, remote work, open source, engineering and design.
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.
1User.where(blocked: false).preload(:subscriptions).collect(&:subscriptions)
2
3=> # returns collection of subscription records
ActiveRecord::Relation#extract_associated provides a shorthand to achieve same result and is more readable than former.
1User.where(blocked: false).extract_associated(:subscriptions)
2
3=> # returns the same collection of subscription records
Here's the relevant pull request for this change.