axiom_selection.rb revision ef12070bdf3f2c5462d76e408f68e17d0d926535
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornbergerclass AxiomSelection < ActiveRecord::Base
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger METHODS = %i(manual_axiom_selection sine_axiom_selection)
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger acts_as_superclass
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger attr_accessible :finished
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger has_many :proof_attempt_configurations
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger has_and_belongs_to_many :axioms,
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger class_name: 'Axiom',
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger association_foreign_key: 'sentence_id',
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger join_table: "axioms_axiom_selections"
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger def initialize(*args)
f5a01e37663bdf559d6e251191b5097dd6f28ea5Julian Kornberger super(*args)
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger self.finished = false
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger end
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger # This seems to be the only way to remove the default scope
f5a01e37663bdf559d6e251191b5097dd6f28ea5Julian Kornberger # (non-imported sentences) from the association
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger def axioms
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger super.where(imported: [true, false])
0c480325395e8989d1abc5ba6d71a8bdd524bc4eIngo Becker end
f5a01e37663bdf559d6e251191b5097dd6f28ea5Julian Kornberger
0c480325395e8989d1abc5ba6d71a8bdd524bc4eIngo Becker def call
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger # overwrite this in the "subclasses"
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger end
5cad3e82e8c017bc189c4cecc00541ec19a2a6e2Julian Kornberger
# This key is used for mutex locking: The selection only has to be done once,
# but many jobs may call it in parallel.
def lock_key
"#{self.class.to_s.underscore.dasherize}-#{id}"
end
protected
def mark_as_finished!
self.finished = true
save!
end
end