Fix #5001: Media assets not searchable through upload records.

Fix this:

  https://danbooru.donmai.us/uploads.json?search[media_assets][md5]=b83daa7f1ae7e4127b1befd32f71ba10

failing with an ActiveRecord::StatementInvalid error.

The bug was that for a `has_many through: ...` association, like
`has_many :media_assets, through: :upload_media_assets`, we weren't
joining on the associated table properly so we ended up generating
invalid SQL.
This commit is contained in:
evazion
2022-02-08 19:04:44 -06:00
parent a02d409068
commit 51ba56e8a3
3 changed files with 18 additions and 1 deletions

View File

@@ -436,7 +436,7 @@ module Searchable
end
if parameter_hash?(params[attr])
relation = relation.where(attr => model.visible(current_user).search(params[attr]).reorder(nil))
relation = relation.includes(attr).references(attr).where(attr => model.visible(current_user).search(params[attr]).reorder(nil))
end
relation

View File

@@ -3,4 +3,9 @@
class UploadMediaAsset < ApplicationRecord
belongs_to :upload
belongs_to :media_asset
def self.search(params)
q = search_attributes(params, :id, :created_at, :updated_at, :upload, :media_asset)
q.apply_default_order(params)
end
end