Class: Preloaders::MergeRequestDiffPreloader
- Inherits:
-
Object
- Object
- Preloaders::MergeRequestDiffPreloader
- Defined in:
- app/models/preloaders/merge_request_diff_preloader.rb
Overview
This class preloads the ‘merge_request_diff` association for the given merge request models.
Usage:
merge_requests = MergeRequest.where(...)
Preloaders::MergeRequestDiffPreloader.new(merge_requests).preload_all
merge_requests.first.merge_request_diff # won't fire any query
Instance Method Summary collapse
-
#initialize(merge_requests) ⇒ MergeRequestDiffPreloader
constructor
A new instance of MergeRequestDiffPreloader.
- #preload_all ⇒ Object
Constructor Details
#initialize(merge_requests) ⇒ MergeRequestDiffPreloader
Returns a new instance of MergeRequestDiffPreloader.
11 12 13 |
# File 'app/models/preloaders/merge_request_diff_preloader.rb', line 11 def initialize(merge_requests) @merge_requests = merge_requests end |
Instance Method Details
#preload_all ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/models/preloaders/merge_request_diff_preloader.rb', line 15 def preload_all merge_request_diffs = MergeRequestDiff.latest_diff_for_merge_requests(@merge_requests) cache = merge_request_diffs.index_by { |diff| diff.merge_request_id } @merge_requests.each do |merge_request| merge_request_diff = cache[merge_request.id] merge_request.association(:merge_request_diff).target = merge_request_diff merge_request.association(:merge_request_diff).loaded! end end |