/ / Actualizando la variable de diferentes carriles modelo - ruby-on-rails

Actualizando la variable de diferentes raíles modelo - ruby-on-rails

Mi sistema tiene un proceso de revisión para su objeto Papel. Lo que quiero hacer es actualizar el estado del documento a publicado si se aceptan 3 revisiones para el documento.

Hice la revisión y funciona. Un usuario básicamente revisa el documento y una vez que se acepta la revisión, se le dará un punto al artículo.

¿Hay alguna manera de implementarlo utilizando AJAX para que una vez que los puntos de revisión hayan llegado a 3, actualice el estado del papel en la base de datos para que se publique?

Lo que he hecho no actualiza el estado del documento, pero muestra que está publicado:

<p class="status">
<strong>Status:</strong>
<% status = 0 %>
<% @paper.reviews.each do |review| %>
<% status += review.review_status %>
<% end %>
<% if status >= 3 %>
Paper published
<% else %>
Paper under reviewing process
<% end %>
<p>

Modelo de papel:

belongs_to :user
belongs_to :subject

has_many :comments
has_many :reviews

#file dependencies
has_attached_file :pdf,
:url => "/assets/:attachment/:id/:basename.:extension",
:path => ":rails_root/public/assets/pdfs/:id/:basename.:extension"

#validations
validates :title, presence: true, length: { maximum: 150 }
validates :subject_id, presence: true
validates :version, presence: true
validates_attachment_content_type :pdf, :content_type => "application/pdf"

Modelo de revisión:

belongs_to :user
belongs_to :paper

Respuestas

0 para la respuesta № 1

debe usar acts_as_state_machine para mantener el estado del papel

revisa https://github.com/aasm/aasm

class Paper < ActiveRecord::Base
include AASM

aasm do
state :under_review, intial: true
state :published

event :publish do
transitions from: :under_review, to: :published
end
end

end

cada vez que alguien revise el papel, verifique si el punto de revisión es igual o mayor que 3 y luego cambie el estado del papel a publicado.

paper.publish!

No olvides agregar aasm_state columna en su mesa de papel.

Hacer las cosas con Ajax no es diferente, simplemente actualice el estado del papel a la vista cuando el punto de revisión sea mayor o igual a 3.