theorem.rb revision 37d0428752228b885ae94e6b0aea5452787fb102
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graberclass Theorem < Sentence
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber include StateUpdater
ce95113287f87460dd557d818280639fc2a31e19Dwight Engen
ce95113287f87460dd557d818280639fc2a31e19Dwight Engen DEFAULT_STATUS = ProofStatus::DEFAULT_OPEN_STATUS
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber has_many :proof_attempts, foreign_key: 'sentence_id', dependent: :destroy
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber belongs_to :proof_status
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber attr_accessible :state, :state_updated_at, :last_error
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber validates :state, inclusion: {in: State::STATES}
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber before_validation :set_default_state
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber before_save :set_default_proof_status
d4f6fa926d92803d8b8217468be483ac2f7e270eStéphane Graber
d4f6fa926d92803d8b8217468be483ac2f7e270eStéphane Graber def set_default_state
d4f6fa926d92803d8b8217468be483ac2f7e270eStéphane Graber self.state ||= 'pending'
d4f6fa926d92803d8b8217468be483ac2f7e270eStéphane Graber end
d4f6fa926d92803d8b8217468be483ac2f7e270eStéphane Graber
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber def set_default_proof_status
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber self.proof_status = ProofStatus.find(DEFAULT_STATUS) unless proof_status
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber end
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber
be2e4e54da3c8054525321422f7f290d45b32a6cStéphane Graber def update_proof_status(proof_status)
if proof_status.solved? || !self.proof_status.solved?
self.proof_status = proof_status
save!
end
end
def prove_options
hets_options = ontology.hets_options
Hets::ProveOptions.new(**hets_options.options,
ontology: ontology, theorems: [self])
end
end