2013-02-08 1 views
0

사용자로부터 데이터를 수집하고 데이터를 저장하고 나중에 데이터를보고 다시 볼 수 있어야하는 상황이 있습니다. 이 경우 설문 조사입니다. 일반적으로 모델을 만들고 일부 유효성 검사를 수행하면 매우 간단합니다.각 필드에 대해 열을 만들지 않고 데이터를 저장하고 양식을 다시 채 웁니다.

그러나이 경우 질문이 너무 자주 바뀌어 내가 수행하면 새로운 마이그레이션을 작성하고 모든 종류의 유지 관리를 지속적으로 수행 할 수 있습니다. 그리고 우리가 정말로 원했던 것은 데이터 그 자체 였기 때문에 id 필드와 form_data 필드를 가진 모델을 만들고 form_data 필드에 params가 무엇이든간에 붙잡아 야합니다. 그 방법은 내가해야 할 일은보기를 바꾸는 것입니다.

그러나 나중에 설문 조사에서 데이터를 편집하고 싶다면 양식 필드를 어떻게 채울 수 있습니까? 목표는 상사가 새로운 질문을 추가 할 때마다보기를 변경하는 것입니다.

P. 나는 Surveyor를이 작업에 사용하지 않는 것을 선호합니다. 왜냐하면 Surveyor가 내가 말할 수있는 것에서 쉽게 벗어나지 못하는 몇 가지 일을하고 싶기 때문입니다.

사용자 모델

has_many :surveys 

조사 모델

belongs_to :user 
has_many :questions 

제출 모델 :

그래서 이것은이 당신을 위해 도움이 될 수

SurveySubmissions 
    id : integer 
    form_data: string 

SurveySubmissions.find(1).form_data 
    "name":"Kevin" 
    "gender":"Male" 
    "favorite_color":"blue" 
+1

코드 제발 .... – codeit

+0

코드를 작성하지 않았습니다.나는 내가 어떻게 이런 짓을할지, 아니면 내가 여기서 제안한 것보다 더 나은 접근법이 있는지 알아 내려고 노력 중이다. –

+0

아직 코드가 없더라도 현재 볼 때 모델을 정의 할 수 있습니까? form_data가 나타내는 것은 명확하지 않습니다. 그것은 형식의 질문입니까, 아니면 대답입니까 ...? – micapam

답변

0

나는 최상의 선택은 양식 필드를 데이터베이스에 저장하고 자바 스크립트를 사용하여 편집 할 때 양식을 다시 채우는 것이라고 생각합니다. 그래서 모든 필드 값을 변수로 가져온 다음 JQuery.each를 사용하여 필드를 채 웁니다.

surveySubmissionData = {"incident_id":"2013BaconSupreme", 
    "_confirmed":"No", 
    "_date_began":"2/26/2013"} 

// Put some code here that loops through the surveySubmissionData 
// and populates the form. 

jQuery.each(surveySubmissionData, function(i, val) { 
    $("#" + i).val(val); 
}); 
0

어떻게 보이는지이다

has_many :questions 
belongs_to :user 
belongs_to :survey 

질문 모델

has_many :answers 
polymorphic => belongs_to "survey and submissions" 

대답 모델

belongs_to :submission 
belongs_to :question 

와 u는 관계를 구축 할 수 있습니다 이것의 위에 당신이 당신의 요구 사항에 따라 필요로하는 다른 물건에

1

당신이 경우 PostgreSQL을 사용하면 Hstore를 살펴볼 수 있습니다. 좋은 시작 지점은 Railscast : http://railscasts.com/episodes/345-hstore (프로 에피소드이므로 지불해야합니다.) 모든 질문/답변 쌍을 단일 데이터베이스 열에 저장할 수 있습니다.

데이터를 json/yml과 같은 단일 데이터베이스 열로 직렬화하고 모델의 가상 속성을 사용하여 양식 필드를 쉽게 만들 수 있습니다 (가상 속성에 대한 Railscast 에피소드 : http://railscasts.com/episodes/16-virtual-attributes-revised, 무료로 제공되는 이전 에피소드도 있음)

또 다른 해결책은 MongoDB + Mongoid와 동적 속성을 사용하는 것입니다. 아직 코딩을 시작하지 않은 경우 가장 좋은 솔루션이 될 수 있습니다.

+0

MongoDB가이 문제를 해결하는 올바른 방법이라고 생각했습니다. 나는 각 설문 조사가 기본적으로 문서이고 자주 바뀔 수 있기 때문에 그것이 어떻게 합리적인지를 완전히 볼 수 있습니다. 누군가 설문 조사를 나중에 편집하고 싶다면 양식을 다시 채우는 방법에 대해 머리를 감싸는 데 어려움을 겪고있는 것 같습니다. –

관련 문제