回答編集履歴

1

修正

2018/09/30 09:44

投稿

sansansandodo
sansansandodo

スコア248

test CHANGED
@@ -1,129 +1 @@
1
- リファレンスを参照しましょう。
2
-
3
- http://railsdoc.com/references/belongs_to
4
-
5
-
6
-
7
- リファレンスによると、
1
+ aaaaaaaaaaa
8
-
9
- models/comment.rb内で、
10
-
11
- ```
12
-
13
- belongs_to :user
14
-
15
- ```
16
-
17
-
18
-
19
- と書いた場合、commentモデルはuserモデルに関連付けされます。
20
-
21
- この時、関連付け名は:userになりますので、適当なcommentインスタンス@commentに関連するuserを取得する場合は以下となります。
22
-
23
- ```
24
-
25
- @comment.user
26
-
27
- ```
28
-
29
- @commentが単一のuserに対してbelongな場合はこれで問題ありません。
30
-
31
-
32
-
33
-
34
-
35
- 一方で、@commentが複数のuserにbelongな状態もあり得ます。
36
-
37
- あるuser1が別のuser2に対してcommentをするような場合です。
38
-
39
-
40
-
41
-
42
-
43
- Commentモデル sender_id:integer receiver_id:integer content:string
44
-
45
-
46
-
47
- 上記前提の時、models/comment.rb内で
48
-
49
- ```
50
-
51
- belongs_to :sender ,class_name: "User"
52
-
53
- ```
54
-
55
- とした場合、commentモデルはUserモデルに関連付けられるところまでは同じですが関連付け名はsenderとなります。なので適当なcommentインスタンス@commentに関連するuserを取得する場合は以下となります
56
-
57
-
58
-
59
- ```
60
-
61
- @comment.sender
62
-
63
- ```
64
-
65
-
66
-
67
- 送り手と受け手がいるので
68
-
69
- ```
70
-
71
- belongs_to :sender ,class_name: "User"
72
-
73
- belongs_to :receiver ,class_name: "User"
74
-
75
- ```
76
-
77
- とすると、関連付け名がsenderとreceiverという別のものでありますが、関連付け先は同じUserモデルとなります。なので適当なcommentインスタンス@commentに関連する送り手と受け手を取得する場合は以下となります
78
-
79
-
80
-
81
- ```
82
-
83
- @comment.sender
84
-
85
- @comment.receiver
86
-
87
- ```
88
-
89
- ただし、これではsenderとrecieverの情報が見分けられないでrailsさんが困ってしまうので、見分けるカラム名を教えてあげましょう。
90
-
91
-
92
-
93
- ```
94
-
95
- belongs_to :sender ,class_name: "Kari", :foreign_key => 'sender_id'
96
-
97
- belongs_to :receiver ,class_name: "Kari", :foreign_key => 'receiver_id'
98
-
99
- ```
100
-
101
- これで、
102
-
103
- ```
104
-
105
- @comment.sender
106
-
107
- ```
108
-
109
- とすれば、Userモデルのsender_idカラムを判断基準にして送り手の情報を取得できます
110
-
111
- User.rbは
112
-
113
- ```
114
-
115
- has_many :sender_comment, class_name: 'Comment', :foreign_key => 'sender_id'
116
-
117
- ```
118
-
119
- でおk
120
-
121
-
122
-
123
- ```
124
-
125
- @user.sender_comment
126
-
127
- ```
128
-
129
- で任意の@userが送ったコメント群が取得できます