0

医師とその研修プログラム/専門分野の関係を設計しようとしています。以下の例:

  • プログラムには1つの専門/プログラムがあります(例:大学の神経学トレーニングプログラムは神経学を専門としています)
  • 医師は複数のプログラムを持つことができるため、複数の専門分野を持つことができます (例: スミス博士は大学の神経学トレーニング プログラムに参加した神経科医であり、ジョーンズ博士は大学の神経学トレーニング プログラムとビッグ ホスピタルの小児科プログラムに参加した神経科医および小児科医です)。

has_many :through として設定できるように思えますが、概念化しようとすると、これは効率的でも正しくもないようです。私は、専門分野 (プログラムではなく) と結びつく、ほとんど無関係な別のモデルを持っています。そのため、プログラムと専門分野を組み合わせません。User.programs.all および Program.users.all にアクセスできるはずです。

モデル ユーザー:

has_many プログラム

has_many 専門、:through => :programs

モデルプログラム:

所属先:ユーザー

所属先:専門

モデル専門:

has_many :users, :through => :program

has_many :プログラム

4

2 に答える 2

0

プログラムを介して専門分野にリンクしないでください。

専門とプログラムが独立するようにします。

医師が専門分野を持っているが、意味のある「プログラム」に参加していないというケースに遭遇する可能性は十分にあるようです。

専門分野からプログラムへの「ソフト」リンクとして追加できます。モデル専門分野では、「belongs_to :program」を追加します。プログラムが NULL になる可能性があります。

于 2013-08-17T18:34:19.687 に答える