+++ b/app/controllers/application_controller.rb @@ -26 +26 @@ class ApplicationController < ActionController::Base - @current_cart = Cart.active.find_by(id: session[:cart_id]) + @current_cart = Cart.active.select(:id, :user_id, :state, :session_id).find_by(id: session[:cart_id]) @@ -34 +34 @@ class ApplicationController < ActionController::Base - cart = Cart.active.find_by(user: current_user) + cart = Cart.active.select(:id, :user_id, :state, :session_id).find_by(user: current_user) @@ -44 +44 @@ class ApplicationController < ActionController::Base - @session_cart = Cart.active.find_by(id: session[:cart_id]) + @session_cart = Cart.active.select(:id, :user_id, :state, :session_id).find_by(id: session[:cart_id]) @@ -66 +66 @@ class ApplicationController < ActionController::Base - session_cart = Cart.find_by(id: session[:cart_id]) + session_cart = Cart.select(:id, :user_id, :state).find_by(id: session[:cart_id]) +++ b/app/controllers/carts_controller.rb @@ -4 +4 @@ class CartsController < ApplicationController - @line_items = @cart ? @cart.line_items.includes(:product) : [] + @line_items = @cart ? @cart.line_items.preload(product: proc { select(:id, :name, :tagline, :price) }) : [] +++ b/app/controllers/home_controller.rb @@ -6 +6 @@ class HomeController < ApplicationController - .select("products.*, AVG(ratings.value) as avg_rating, COUNT(ratings.id) as ratings_count") + .select("products.id, products.name, products.tagline, products.price, products.weight, products.expiration_date, products.category_id, AVG(ratings.value) as avg_rating COUNT(ratings.id) as ratings_count") @@ -11 +11 @@ class HomeController < ApplicationController - .includes(:category) + .preload(category: proc { select(:id, :name) }) +++ b/app/controllers/line_items_controller.rb @@ -5 +5 @@ class LineItemsController < ApplicationController - product = Product.find(params[:product_id]) + product = Product.select(:id, :price).find(params[:product_id]) +++ b/app/controllers/products_controller.rb @@ -3 +3,4 @@ class ProductsController < ApplicationController - @product = Product.includes(:category, :ratings).find(params[:id]) + @product = Product + .select(:id, :name, :tagline, :price, :weight, :dimensions, :expiration_date, :details, :category_id, :created_at, :updated_at) + .preload(category: proc { select(:id, :name) }) + .find(params[:id]) +++ b/app/models/cart.rb @@ -22 +22 @@ class Cart < ApplicationRecord - current_item = line_items.find_by(product: product) + current_item = line_items.select(:id, :product_id, :quantity, :price).find_by(product: product) @@ -41 +41 @@ class Cart < ApplicationRecord - line_items.find_by(product: product)&.quantity || 0 + line_items.select(:quantity).find_by(product: product)&.quantity || 0 +++ b/app/views/shared/_product_cart_controls.html.erb @@ -3 +3 @@ - <% line_item = current_cart.line_items.find_by(product: product) %> + <% line_item = current_cart.line_items.select(:id, :quantity).find_by(product: product) %>