4

Candidate変更、バージョン差分、変更者、変更に関するコメントを追跡する必要があるモデル ( ) があります。私は paper_trail が大好きで、ほぼすべての点でまさに必要としているものですが、「変更コメント」を保存する最良の方法は何だろうと思っています。次の 3 つのオプションのいずれかを実装することを考えています。

  1. commentsテーブルに列を追加しversionsます。この方法で行った場合、その情報を実際に更新する最善の方法がよくわかりません。多分candidate.version.comments = @commentsうまくいくでしょうか?paper_trail のテーブルにカスタム列を追加するのは悪いことですか?

  2. paper_trail のメタデータを使用してコメントを保存します。これはメタデータの意図ではないようですが、うまくいくでしょうか?

  3. belongs_to :candidateを追跡する別のテーブルを追加します。これはひどいようです-この新しいテーブルをバージョンテーブルに所属させる必要もありますか?commentsversion

どんな洞察も大歓迎です。以前に paper_trail を使用して以来、私は paper_trail で解決策を見つけることにかなり集中してきましたが、過去に使用した他の宝石やオプションも検討したいと思います。

4

1 に答える 1

5

私は最終的にオプション 1 を使用しました。コメント フィールドをバージョン テーブルに追加する移行を作成し、以下を追加しました。CandidatesController#update

if @candidate.update(candidate_params)
    #Add comments if they are available
    @candidate.reload.versions.last.update(comments: params[:comments]) unless params[:comments].empty?

うまく機能しているように見えますが、他にご意見があればよろしくお願いします。

于 2013-12-19T04:24:53.537 に答える