diff --git a/app/controllers/concerns/jurisprudence_search.rb b/app/controllers/concerns/jurisprudence_search.rb index 5c801e2..e0ce97c 100644 --- a/app/controllers/concerns/jurisprudence_search.rb +++ b/app/controllers/concerns/jurisprudence_search.rb @@ -11,6 +11,8 @@ module JurisprudenceSearch fulltext search_params[field], fields: [field] if search_params[field].present? end + with(:subject_ids).any_of(search_params[:subject_ids].split(",").map(&:strip).map(&:to_i)) if search_params[:subject_ids].present? + order_by :doc_date order_by :year diff --git a/app/models/cdao/jurisprudence.rb b/app/models/cdao/jurisprudence.rb index 4c6454f..48f05d4 100644 --- a/app/models/cdao/jurisprudence.rb +++ b/app/models/cdao/jurisprudence.rb @@ -5,6 +5,14 @@ class Cdao::Jurisprudence < Cdao::Base alias_attribute :doc_date, :docdate + def subjects + doctrines.map(&:subjects).flatten.uniq + end + + def subject_ids + subjects.map(&:id) + end + searchable do text :reference_number, stored: true text :title, stored: true @@ -28,6 +36,7 @@ class Cdao::Jurisprudence < Cdao::Base integer :search_year do year.present? && year > 0 ? year : (doc_date.try :year) end + integer :subject_ids, multiple: true boolean :edited end