我的系统对其Paper对象进行了审核。我想要做的是如果接受论文的3篇评论,则将论文状态更新为已发布。
我已经完成了评论部分并且它有效。用户基本上对论文进行评论,一旦评论被接受,论文将被给予一个观点。
有没有办法可以使用AJAX实现,这样一旦审核点达到3,它会将数据库中的纸张状态更新为已发布?
我所做的并没有更新论文的状态,但表明它已发布:
<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>
纸模型:
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'
评论模型:
belongs_to :user
belongs_to :paper
答案 0 :(得分:0)
你应该使用acts_as_state_machine来维护纸张的状态
结帐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
每当有人评论论文时,请检查评论点是否等于或大于3,然后将论文状态更改为已发布。
paper.publish!
不要忘记在纸质表格中添加 aasm_state 列。
使用Ajax也不例外,只需在审核点大于或等于3时更新纸质状态。