#ruby-on-rails #rails-admin
Вопрос:
Я натыкаюсь на стену с фильтрами.
У меня есть две модели и относительный rails_admin conf:
class ImageBase < ApplicationRecord
has_and_belongs_to_many :authors, optional: true
[...]
end
class Author < ApplicationRecord
has_and_belongs_to_many :image_bases, class_name: 'ImageBase'
[...]
end
config.model 'ImageBase' do
list do
scopes [:published, :draft, nil]
filters %i[collocazione authors]
[...]
field :authors do # (4)
eager_load true
queryable true
visible true
searchable %i[name surname]
end
search_by :search_image_base_admin
end
end
Моя проблема в том, что когда я фильтрую базу изображений по авторам в Rails_admin, в результатах отображается только соответствующий автор, а не все авторы, связанные с записью базы изображений.
Мне это нужно в основном для экспорта данных после фильтрации, это не просто проблема в представлении списка (я могу с этим смириться).
Не можете найти решение ни в документах, ни в сети, никаких предложений/решений?
Спасибо, Франческо
Комментарии:
1. Я не понимаю вашего вопроса, когда вы говорите «к записи базы изображений», какую запись вы имеете в виду? вы настраиваете список базовых записей изображений, поэтому при фильтрации по одному субъекту вы получите только базовую запись изображения, связанную с этим конкретным субъектом. Не могли бы вы переформулировать свой вопрос?
2. Я имею в виду следующее: когда я фильтрую базу изображений (мою основную таблицу) по автору (отношение m2m) в rails_admin, результаты показывают мне только того же Автора, которого я отфильтровал в результатах базы изображений, а не всех Авторов, связанных с записями. Пример: ImageBaseRecord1 <идентификатор:23,Авторы:[Пикассо,Брессон]>, когда я фильтрую по «Пикассо», я получаю в ImageBaseRecord1 только «Пикассо»
3. Если вы находитесь в представлении списка базы изображений администратора rails и ищете записи, связанные с Picasso(через авторов m2m), вы получите это, почему вы ожидаете, что также получите записи, связанные с Брессоном? Извините, я все еще не понимаю ваших ожиданий.
4. потому что, если с записью базы изображений связаны два автора, мне нужно видеть обоих, а не только того, для которого я отфильтровал… в противном случае я получу неверные данные при экспорте результатов!
5. Извините, я не могу вам помочь, для меня не имеет смысла то, о чем вы просите.
Ответ №1:
Я не уверен, что понял, но вы всегда можете переопределить встроенный поиск и создать свой собственный с областью действия, как это
RailsAdmin.config do |config|
config.model ImageBase do
list do
search_by :custom_search
end
end
end
scope :custom_search, ->(query) { where(name: query.reverse) }
Комментарии:
1. Спасибо, но моя проблема в разделе фильтров, а не в поиске как таковом. Фильтры обрабатываются перед областью действия rails_admin.
2. Вы всегда можете сделать unscope.where(что-то), но вы тоже потеряете нумерацию страниц