Remove investment supports query optimizations
In the previous commit I mentioned: > If I'm right, the `investment_votes` instance variable only exists to > avoid several database queries to get whether the current user has > supported each of the investments. > > However, that doesn't make much sense when only one investment is > shown. Now let's discuss the case when there are several investments, like in the investments index: * There are 10 investments per page by default * Each query takes less than a millisecond * We still make a query per investment to check whether the current user voted in a different group * AFAIK, there have been no performance tests showing these optimizations make the request to the investments index significantly faster * These optimizations make the code way more complex than it is without them Considering all these points, I'm removing the optimizations. I'm fine with adding `includes` calls to preload records and avoid N+1 queries even if there are no performance tests showing they make the application faster because the effect on the code complexity is negligible. But that's not the case here. Note we're using `defined?` instead of the `||=` operator because the `||=` operator will not serve its purpose when the result of the operation returns `false`.
This commit is contained in:
@@ -15,7 +15,6 @@ class Management::Budgets::InvestmentsController < Management::BaseController
|
||||
|
||||
def index
|
||||
@investments = @investments.apply_filters_and_search(@budget, params).page(params[:page])
|
||||
load_investment_votes(@investments)
|
||||
end
|
||||
|
||||
def new
|
||||
@@ -49,15 +48,10 @@ class Management::Budgets::InvestmentsController < Management::BaseController
|
||||
|
||||
def print
|
||||
@investments = @investments.apply_filters_and_search(@budget, params).order(cached_votes_up: :desc).for_render.limit(15)
|
||||
load_investment_votes(@investments)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_investment_votes(investments)
|
||||
@investment_votes = managed_user ? managed_user.budget_investment_votes(investments) : {}
|
||||
end
|
||||
|
||||
def investment_params
|
||||
attributes = [:external_url, :heading_id, :tag_list, :organization_name, :location,
|
||||
image_attributes: image_attributes,
|
||||
|
||||
Reference in New Issue
Block a user