1

私は Rails 3 を使用しており、シラバスを作成する User というモデルがあります。シラバスを「共同編集」する機能を追加して、元の作成者が別のユーザーを招待してコンテンツを変更できるようにしたいと考えています。

以下のどのオプションがより理にかなっていますか? (もっといいのがあれば教えてください)

  1. Syllabus.author がすべての著者を含む配列になるように、author 属性を配列属性にします。

  2. coauthor1、coauthor2など、シラバスに追加の属性を作成します

最初のものがより理にかなっている場合、それを配列属性にする方法を具体的に説明し、後で追加の著者を挿入することができますか?

私が 2 番目のオプションを検討した理由の 1 つは、元の著者と他の共著者を区別できるようになり、おそらく元の著者だけがシラバスを削除できるようになり、他の共著者の権限は制限されるからでしょうか?

4

2 に答える 2

1

データベースを正規化する必要があります。著者とシラバス用に別々のモデルを用意し、has_many_through関係を介してそれらをリンクしたいと思います。リンクテーブルには、特定の関係に関する追加情報を含めることができます。たとえば、作成者が元の作成者であるかどうかなどです。

于 2012-04-28T12:02:39.630 に答える
1

次のようにリンク テーブルを作成することもできます。

autorhs_syllabus
----------------------
id
author_id integer
syllabus_id integer
original_author boolean 
于 2012-04-28T11:42:03.490 に答える