0

ユーザーからデータを収集し、データを保存して、後で戻ってデータを表示できるようにする必要がある状況があります。この場合は調査です。通常、私はモデルを作成していくつかの検証を行いますが、それは非常に簡単です。

しかし、この場合、質問は頻繁に変わるので、そうすると、新しい移行を作成し、あらゆる種類のメンテナンスを絶えず実行していることに気付く可能性があります。そして、私たちが本当に必要としているのはデータ自体だけなので、idフィールドとform_dataフィールドを持つモデルを作成し、そのform_dataフィールドにパラメータが何であれ貼り付ける必要があることに気付きました。そうすれば、私がしなければならないのは、ビューを変更することだけであり、モデルをまったく混乱させることはありません。

しかし、後で調査のデータを編集したい場合、フォームフィールドにどのように入力しますか?目標は、上司が新しい質問を追加したいときにのみビューを変更することです。

PS私が言えることから、Surveyorを簡単に実行できないいくつかのことを実行できるようにしたいので、このタスクにはSurveyorを使用したくありません。

だからこれはそれがどのように見えるかです

SurveySubmissions
  id : integer
  form_data: string

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

3 に答える 3

1

PostgreSQLを使用している場合は、Hstoreを確認できます。良い出発点はこのRailscastです:http://railscasts.com/episodes/345-hstore(プロエピソードなので、支払いが必要です)。これにより、すべての質問と回答のペアを単一のデータベース列に保存できます。

データをjson/ymlとして単一のデータベース列にシリアル化し、モデルの仮想属性を使用してフォームフィールドに簡単に入力することもできます(仮想属性に関するRailscastエピソード:http://railscasts.com/episodes/16-virtual-属性-改訂、無料の古いエピソードもあります)

もう1つの解決策(そして私のお気に入り)は、MongoDB+Mongoidとその動的属性を使用することです。まだコーディングを開始していない場合は、これが最善の解決策になる可能性があります。

于 2013-02-08T13:05:28.060 に答える
0

最良の選択は、フォーム フィールドをデータベースに保存し、編集時に JavaScript を使用してフォームを再入力することだと思います。そこで、すべてのフィールド値を変数に取り込み、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);
});
于 2013-02-27T15:47:15.593 に答える
0

これはあなたに役立つかもしれません:

ユーザーモデル

has_many :surveys

調査モデル

belongs_to :user
has_many :questions

提出モデル

has_many :questions
belongs_to :user
belongs_to :survey

質問モデル

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

回答モデル

belongs_to :submission
belongs_to :question

これに加えて、要件に応じて必要な関係やその他のものを構築できます

于 2013-02-08T04:28:54.680 に答える