class Need < ActiveRecord::Base include Workflow workflow_column :state max_paginates_per 10 acts_as_paranoid validates :title, :presence => true, length: {within: 4..128} validates :description, presence: true, length: {maximum: 65535} belongs_to :author, class_name: 'Customer' # Need's workflow lifecycle workflow do state :created do event :validate, :transitions_to => :verified event :refuse, :transitions_to => :refused end state :refused state :verified do event :negociate, :transitions_to => :negociating end state :negociating do event :accept, :transitions_to => :negociated event :reject, :transitions_to => :failed end state :negociated state :failed end # Human state conversion def human_state case state when 'created' "En attente de validation" when 'verified' "Validé" when 'refused' "Refusé" when 'negociating' "En cours de negociation" when 'negociated' "Négociation effecutée" when 'failed' "Négociation échouée" else "Inconnu" end end end