has_many :throughの参照先名に別の名前を付ける

The has_many :through Associationで紹介されている、has_many :throughの関連に対して、実際のモデル名以外の名前でアクセスできる関連を構築したのでメモ。

 

The has_many :through Associationで紹介されていたモデルのソースはこうだった。

 

これだと、

のような感じで使用できるようになる。

 

では、こうやって使いたい場合は?

つまり、PhysicianモデルとPatientモデルの関係に、手術しますよという関連を持たせたい場合で、関連名はoperationsにするけど、実際の参照先モデルはPatientモデルであって、この部分の不一致を解消しないといけないよという場合。

 

appointmentsテーブルにoperation_idを追加

して、Railsで作るTwitterもどきを参考にして各モデル間の関連性を次のように定義する。

これでなんとか実現できた。

 
 

2013/2/27 追記:

ところで、physicianは医者ですが内科医のことなので、手術はしませんね( ´△`)

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=2096