diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f5ede6a8d..fbb8a0719 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -35,8 +35,10 @@ class ApplicationController < ActionController::Base return end + model = options[0]&.delete(:model) if subject.respond_to?(:includes) && (request.format.json? || request.format.xml?) - associations = ParameterBuilder.includes_parameters(params[:only], model_name) + model ||= model_name + associations = ParameterBuilder.includes_parameters(params[:only], model) subject = subject.includes(associations) end diff --git a/app/controllers/emails_controller.rb b/app/controllers/emails_controller.rb index 556c86526..de301bab2 100644 --- a/app/controllers/emails_controller.rb +++ b/app/controllers/emails_controller.rb @@ -4,7 +4,7 @@ class EmailsController < ApplicationController def index @email_addresses = authorize EmailAddress.visible(CurrentUser.user).paginated_search(params, count_pages: true) @email_addresses = @email_addresses.includes(:user) - respond_with(@email_addresses) + respond_with(@email_addresses, model: "EmailAddress") end def show diff --git a/app/models/email_address.rb b/app/models/email_address.rb index e4b76a7bc..27546f4b3 100644 --- a/app/models/email_address.rb +++ b/app/models/email_address.rb @@ -72,4 +72,8 @@ class EmailAddress < ApplicationRecord def verification_key signed_id(purpose: "verify") end + + def self.available_includes + [:user] + end end diff --git a/app/models/forum_topic_visit.rb b/app/models/forum_topic_visit.rb index 8fe1ac8ac..d484041e6 100644 --- a/app/models/forum_topic_visit.rb +++ b/app/models/forum_topic_visit.rb @@ -7,7 +7,11 @@ class ForumTopicVisit < ApplicationRecord end def self.search(params) - q = search_attributes(params, :id, :created_at, :updated_at, :user, :forum_topic_id, :last_read_at) + q = search_attributes(params, :id, :created_at, :updated_at, :user, :forum_topic, :last_read_at) q.apply_default_order(params) end + + def self.available_includes + [:forum_topic] + end end diff --git a/app/models/saved_search.rb b/app/models/saved_search.rb index a6efcedc6..4ebe3c056 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -168,8 +168,4 @@ class SavedSearch < ApplicationRecord def disable_labels=(value) user.update(disable_categorized_saved_searches: true) if value.to_s.truthy? end - - def self.available_includes - [:user] - end end diff --git a/app/models/tag_implication.rb b/app/models/tag_implication.rb index df0e4be3a..c0bf11992 100644 --- a/app/models/tag_implication.rb +++ b/app/models/tag_implication.rb @@ -150,4 +150,8 @@ class TagImplication < TagRelationship end end end + + def self.available_includes + super + [:child_implications, :parent_implications] + end end diff --git a/app/models/user_event.rb b/app/models/user_event.rb index ce700a3a4..bb9b37006 100644 --- a/app/models/user_event.rb +++ b/app/models/user_event.rb @@ -37,6 +37,10 @@ class UserEvent < ApplicationRecord q end + def self.available_includes + [:user, :user_session] + end + concerning :ConstructorMethods do class_methods do # Build an event but don't save it yet. The caller is expected to update the user, which will save the event.