タイトルでは説明しにくいので、実現したい例を以下に示します。
以下の3つのモデルがあり、データベースもすでに作成してあるとします。
[Projectモデル]
id,name
1,社内運動会
2,年末キャンペーン
[ProjectsMembersモデル]
(中間テーブル)
project_id,member_id
[Memberモデル]
id,name(UNIQUE)
1,山田
2,田中
このようなモデルがあった場合、Project内でのMemberの評価を指定できるようにしたいと思っています。
例えば
lang
1p1 = Project.find 1 2p1.members.find_by_name('山田').rate 3#山田さんの社内運動会プロジェクトでの評価は3 4 5p = Project.find 2 6p2.members.find_by_name('山田').rate 7#山田さんの年末キャンペーンでの評価は2
ここで、rateという属性を参照していますが、これをMembersモデルに実装(rateカラムを設ける)してしまうと
Projectごとの評価ができなくなってしまいます。
これを避けるために、中間テーブルにrateというカラムを設けたいと思っております
例えば
[ProjectsMembersモデル]
(中間テーブル)
project_id,member_id,rate
1,1,3
2,1,2
とすれば、プロジェクトごとにメンバーの方の評価を設定することができます。
ここで、タイトルの質問に戻りますが
中間テーブルにこのように情報をもたせた場合、どうやってアクセスすることがベストでしょうか。
上で書いたProjectsMembersモデルにrateカラムを設ける方法だと。
lang
1p1 = Project.find 1 2m1 = Member.find_by_name('山田') 3result = ProjectsMembers.find(:project_id => p1.id,:member_id => m1.id) 4result.rate
これで一応結果は得られる(と思い)ますが、中間テーブルにいい感じにアクセスできるような方法はありませんでしょうか。
もしくが、このような問題を別の方法で解決する方法はありますでしょうか。
ご教授お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/10/26 06:08