2014-04-24 2 views
0

내 시스템의 Paper 객체에 대한 검토 프로세스가 있습니다. 내가 뭘하고 싶은지는 논문에 대한 3 가지 리뷰가 받아 들여지면 논문의 상태를 발표로 업데이트하는 것입니다.다른 모델 레일에서 변수 업데이트

리뷰 부분을 작성했는데 작동합니다. 사용자는 기본적으로 논문을 검토하고 검토가 승인되면 논문에 한 점이 부여됩니다.

내가 검토 포인트 3까지 온 후에 출판에,이 데이터베이스의 종이 상태를 업데이트 할 수 있도록 AJAX를 사용하여 구현할 수있는 방법이 있나요? 나는 종이의 상태를 업데이트하지 않는 수행하지만이 게시 된 것을 보여준다했습니다 무엇

:

<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

종이의 상태를 유지하기 위해 acts_as_state_machine을 사용해야합니다.

,210

체크 아웃 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! 

이 donot 당신의 종이 테이블에 aasm_state에게 열을 추가하는 것을 잊지. Ajax를 활용하기

검토 포인트는 다음 또는 3

+0

와 같은 큰 어떻게 때마다 사람이 리뷰를 기록하는 검사를 수행 할 때보기에는 다른 단지 업데이트 종이 상태입니까? 리뷰 또는 페이퍼 컨트롤러에 있어야합니까? –

+0

리뷰가 종이에 속해 있다고 생각합니다. 종이에 대한 리뷰를 만들 때마다 종이에 게시 된 상태로 이동할 충분한 포인트가 있는지 확인하십시오. –