Sha256: d4a96d3b326559b6f606edb12d7a62d02a0b2eaf662b82e9baf18edc85e03a3e

Contents?: true

Size: 1.38 KB

Versions: 2

Compression:

Stored size: 1.38 KB

Contents

module EnjuSubject
  module EnjuManifestation
    def self.included(base)
      base.extend ClassMethods
    end

    module ClassMethods
      def enju_subject_manifestation_model
        include InstanceMethods
        attr_accessible :subjects_attributes, :classifications_attributes
        has_many :subjects
        has_many :classifications
        accepts_nested_attributes_for :subjects, :allow_destroy => true, :reject_if => :all_blank
        accepts_nested_attributes_for :classifications, :allow_destroy => true, :reject_if => :all_blank
        after_save do
          subject_index!
        end
        after_destroy do
          subject_index!
        end

        searchable do
          text :subject do
            subjects.map{|s| [s.term, s.term_transcription]}.flatten.compact
          end
          string :subject, :multiple => true do
            subjects.map{|s| [s.term, s.term_transcription]}.flatten.compact
          end
          string :classification, :multiple => true do
            classifications.map{|c| "#{c.classification_type.name}_#{c.category}"}
          end
          integer :subject_ids, :multiple => true
        end
      end

      module InstanceMethods
        def subject_index!
          subjects.map{|subject| subject.index}
          classifications.map{|classification| classification.index}
          Sunspot.commit
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
enju_subject-0.1.0.pre28 lib/enju_subject/manifestation.rb
enju_subject-0.1.0.pre27 lib/enju_subject/manifestation.rb