医師とその研修プログラム/専門分野の関係を設計しようとしています。以下の例:
- プログラムには1つの専門/プログラムがあります(例:大学の神経学トレーニングプログラムは神経学を専門としています)
- 医師は複数のプログラムを持つことができるため、複数の専門分野を持つことができます (例: スミス博士は大学の神経学トレーニング プログラムに参加した神経科医であり、ジョーンズ博士は大学の神経学トレーニング プログラムとビッグ ホスピタルの小児科プログラムに参加した神経科医および小児科医です)。
has_many :through として設定できるように思えますが、概念化しようとすると、これは効率的でも正しくもないようです。私は、専門分野 (プログラムではなく) と結びつく、ほとんど無関係な別のモデルを持っています。そのため、プログラムと専門分野を組み合わせません。User.programs.all および Program.users.all にアクセスできるはずです。
モデル ユーザー:
has_many プログラム
has_many 専門、:through => :programs
モデルプログラム:
所属先:ユーザー
所属先:専門
モデル専門:
has_many :users, :through => :program
has_many :プログラム