2

作成中の新しいアプリのモデル名を決めるのに問題があります。これらは重要な決定なので、正しく実行したいと思います。これは医療記録を保持するためのデータベースになるので、医療サービスを受けている人、その家族、医師、看護師/事務スタッフ、事故の目撃者などの記録があります。

あらゆるタイプの人に固有のテーブルを用意する代わりに、「人」と「ユーザー」のモデルだけを作成することを考えています。「User」モデルは、医療施設で働くすべての個人を保持し、「People」テーブルは、患者や事故の目撃者など、他のすべての人を保持します。

ユーザーが事故を記録した場合、1 人の「ユーザー」が目撃者になり、別の「ユーザー」が被害者になる可能性があるため、私にはまだ問題があります。「人」(患者など)と「ユーザー」(従業員など)をシステム内の2つの一定の場所に分離しているため、基本的に私のアプリは柔軟性がないように見えます。

では、全員のために「People」という名前の 1 つのテーブルを作成できないのはなぜですか? 次に、人は、ユーザー、従業員、医師、患者、被害者、またはそれらの任意の組み合わせである可能性があります。

私たちは、私たちのために働いてシステムにログインする人を常に「ユーザー」と呼ぶように教えられてきましたか? これは問題ですか?

全員に「Person」という名前のテーブルを用意することにマイナス面はありますか? 物事が少し簡単になるようです。誰でも (有効なログイン/ステータスを有効にしてログインすることにより) ユーザーになることも、非ユーザーになることもできます。これに否定的な見方はありません。

4

3 に答える 3

5

あなたと私は常に人ですが、特定の状況では特定の役割を果たします。では、すべての人が「人」と呼ばれるモデルによって表され、それらの役割を必要とする特定のクラスによってリンクされている設定についてはどうでしょうか。例えば:

class Person < ActiveRecord::Base
  ...
end

class HospitalEmployee
  belongs_to :user, class_name: 'Person' # foreign key is user_id
end

class MedicalRecord < ActiveRecord::Base
  belongs_to :patient, class_name: 'Person' # foreign key is patient_id
  ...
end

class Accident < ActiveRecord::Base
  belongs_to :victim, class_name: 'Person' # foreign key is victim_id
  belongs_to :witness, class_name: 'Person' # foreign key is witness id
end

このように、人物を構成するデータは常に一定ですが、人物が果たす役割を構成するデータは別のモデルに格納されます。

この種の設定は、よくあることです。たとえば、私が勤務していた大学では、個人を扱うすべてのレコードがマスターの「PEOPLE」ファイルを指していました。後に従業員になった学生は、同じレコードを使用していました。両方のインスタンスの PEOPLE ファイル。

于 2013-01-12T05:44:39.613 に答える
0

みんなでひとつのテーブルを作ることができます。これは、単一テーブルの継承を使用して実行できます。ユーザーを親、その他を子(従業員、患者)として使用することをお勧めします。User テーブルに type フィールドを作成する必要があります。ユーザーのタイプを格納します。

詳細については、http: //rookieonrails.blogspot.in/2008/01/single-table-inheritance-in-rails.htmlを参照してください。

于 2013-01-12T05:29:30.450 に答える
0

私は特定のモデルと一般的なモデルの両方を作成する傾向があります.UserにはPersonがあり、EmployeeにはPersonがあります。Person モデルは、名前、ID、メールなどの基本を保持するだけです。特定の役割に固有のものはすべて、役割固有のモデル (ユーザーなど) にありますが、関連するモデルからいつでも人に戻ることができるため、たとえば、特定の人が持っているすべての役割を確認できます。

于 2013-01-12T05:42:10.507 に答える