2011-01-18 5 views
1

ActiveRecord 지속성을 사용하여 다중 단계 양식을 작성하려고합니다.단일 모델 다중 단계 양식 (레일 포함) 3

먼저 사용자가 양식을 제출하면 "사용자"가 생성됩니다.

나중에 관리자가 "사용자"라고 검토하고 1) 해당 사용자를 거부하거나 2) 자세한 정보를 요청할 수 있습니다.

그런 다음 사용자가 새 정보를 제공하기 위해 다른 양식이 생성됩니다.

등등.

이것은 주 기계와 비슷하지만 이용 가능한 보석 중 어느 것도 명확한 문서가 없습니다. 또한 컨트롤러에 대한 사용자 지정 동작에 의존하고 있다고 생각합니다.

디자인이 좋지 않거나 올바른 방법이 있는지 모르겠습니까?

감사합니다.

답변

3

내가 그 일을의 올바른 방법이 무엇인지 모르겠지만, 내 프로젝트에서 나는 사용자 모델에 상태 필드를 추가하여 그것을했다 . 따라서, 예를 들어 :

  • 상태 = 0 - 새로운 사용자
  • 상태 = 1 - 관리자 더 많은 정보 당신이 가지고 그런

요청 - 관리자는

  • 상태 = 2가 해당 사용자를 거부 상태 필드를 기반으로 사용자에 대한 올바른 양식을 생성합니다. 당신은 컨트롤러에서 작업을 수행 할 수 있습니다

    def multistep_form 
        @user = User.find(params[:id]) 
        case @user.status 
        when 0 
        render "form_1" 
        when 1 
        render "rejected" 
        when 2 
        render "form_2" 
        else 
        render "error" 
        end 
    end 
    

    또는 어딘가를보기 : _form_1, _form_2_form_3 :

    <%= render :partial => "form_{@user.status}" %> 
    

    은 물론 당신은 파셜이 필요합니다.

    이것은 실제 솔루션에 당신은 또한 사용자에 의해 변경되는 status 필드를 보호하고 status 필드에 몇 가지 검증을 추가 할 경우에만 예를 필요가있다, 그래서되지 않습니다 아무것도하지만, 0, 1, 2

  • +0

    Upvoted. 이 시나리오보다 복잡한 것을 사용하는 이유는 없습니다. 또한 승인되지 않은 사용자를이 작업으로 리디렉션하기 위해 응용 프로그램 컨트롤러에서 작업을 수행해야 할 수도 있습니다. – mark

    +0

    그래서 이것을 routes.rb에 넣으면 : – maukoquiroga

    +0

    죄송합니다. 그것은 나에게 이것이 어떻게 접근 할 수있는 아이디어를 준다. 감사. – maukoquiroga

    2

    이것이 정확히 당신이 찾고있는 것인지 모르겠지만 잘하면 올바른 방향으로 향하게 할 것입니다.

    라이언 베이츠 6 월이 뒷면에 Railscast했다 - http://railscasts.com/episodes/217-multistep-forms

    +0

    정확하게는 아닙니다.나는 모든 단계가 동일한 모델에 유지되어야하고, 관리자 수정이 각 다음 단계를 호출하기를 기다린다. – maukoquiroga

    1

    사용자가 단계를 진행할 때 논리를 시작하면 상태 시스템을 고려하는 것이 더 깔끔할 수 있습니다.

    것은 내가 http://dev.netizer.pl/transitions-state-machine-for-rails-3.html

    매우 행복했습니다 그럼 당신은 다만 수 user.approve!

    그리고 이러한 이메일을 보내는 등 상태 머신에서 개별적으로 의미있는 작업을, 후크 등의 물건. 전환 당 1-2 개 이상의 작업을 얻거나 새로운 전환을 추가해야하는 즉시 상태 시스템 인 IMHO로 모델링하는 것이 좋습니다.

    관련 문제