class DoctrineJurisprudence < ApplicationRecord acts_as_list column: :rank, scope: %i[doctrine_id] belongs_to :doctrine, optional: false belongs_to :jurisprudence, class_name: "Cdao::Jurisprudence", optional: false def search_year jurisprudence.year.present? && jurisprudence.year > 0 ? jurisprudence.year : (jurisprudence.doc_date.try :year) end def search_doc_date jurisprudence.doc_date.presence || Date.new(jurisprudence.year.presence || 0) end searchable do integer :doctrine_id integer :jurisprudence_id integer :search_year date :search_doc_date string :reference_number do jurisprudence.clean_reference_number end integer :search_year do jurisprudence.year.present? && jurisprudence.year > 0 ? jurisprudence.year : (jurisprudence.doc_date.try :year) end date :search_doc_date do jurisprudence.doc_date.presence || Date.new(jurisprudence.year.presence || 0) end string :reference_number do jurisprudence.clean_reference_number end join(:subject_ids, :target => Doctrine, :type => :integer, :multiple => true, :join => { :from => :id, :to => :doctrine_id }) end end