質問編集履歴
6
内容の更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
独自メソッドを用いてvalidateを行いたいと考えていましたがうまく行きません。ネット上にはhas_manyのバリデーションの仕方など掲載されておりましたがthroughを含めたものは見た限りありませんでした。
|
2
2
|
|
3
|
-
自分が開発しているアプリ内でフォローできる人数を
|
3
|
+
自分が開発しているアプリ内でフォローできる人数を8人以下にしたいです。そこでバリデーションを設置する事で8人以上の人をフォローをした時にエラーが表示されるようにしたいです。
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
-
以下のコードではバリデーションに引っかからず
|
7
|
+
以下のコードではバリデーションに引っかからず8人以上の人をフォローできるようになってしまいます。
|
8
8
|
|
9
9
|
よろしくお願いします。
|
10
10
|
|
@@ -18,13 +18,29 @@
|
|
18
18
|
|
19
19
|
second_following=Relationship.create(follower_id: "1", followed_id: "3")
|
20
20
|
|
21
|
+
third_following=Relationship.create(follower_id: "1", followed_id: "4")
|
22
|
+
|
23
|
+
fourth_following=Relationship.create(follower_id: "1", followed_id: "5")
|
24
|
+
|
25
|
+
fifth_following=Relationship.create(follower_id: "1", followed_id: "6")
|
26
|
+
|
27
|
+
sixth_following=Relationship.create(follower_id: "1", followed_id: "7")
|
28
|
+
|
29
|
+
seventh_following=Relationship.create(follower_id: "1", followed_id: "8")
|
30
|
+
|
31
|
+
eighth_following=Relationship.create(follower_id: "1", followed_id: "9")
|
32
|
+
|
33
|
+
ninth_following=Relationship.create(follower_id: "1", followed_id: "10")
|
34
|
+
|
35
|
+
|
36
|
+
|
21
|
-
```
|
37
|
+
```
|
22
|
-
|
38
|
+
|
23
|
-
上のコードを入力してレコードを作成し、
|
39
|
+
上のコードを入力してレコードを作成し、9つともレコードが作成されました。エラーやレコードを作成できない
|
24
40
|
|
25
41
|
といったメッセージは表示されませんでした。
|
26
42
|
|
27
|
-
確認として,以下のコードを入力して
|
43
|
+
確認として,以下のコードを入力して9が出力され、9人フォローできていることも確認できました。
|
28
44
|
|
29
45
|
```ここに言語を入力
|
30
46
|
|
@@ -38,7 +54,7 @@
|
|
38
54
|
|
39
55
|
|
40
56
|
|
41
|
-
これでバリデーションに問題があるというのはわかったのですが実際にどこに問題があり、なぜバリデーションが機能せず、
|
57
|
+
これでバリデーションに問題があるというのはわかったのですが実際にどこに問題があり、なぜバリデーションが機能せず、9人以上フォローすることができてしまうのかがよくわかりません。
|
42
58
|
|
43
59
|
|
44
60
|
|
@@ -176,7 +192,7 @@
|
|
176
192
|
|
177
193
|
|
178
194
|
|
179
|
-
if Account.find(followed_id).following.count >
|
195
|
+
if Account.find(followed_id).following.count > 8
|
180
196
|
|
181
197
|
|
182
198
|
|
5
問題の明確化
test
CHANGED
File without changes
|
test
CHANGED
@@ -33,6 +33,16 @@
|
|
33
33
|
me.following.count
|
34
34
|
|
35
35
|
```
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
これでバリデーションに問題があるというのはわかったのですが実際にどこに問題があり、なぜバリデーションが機能せず、2人以上フォローすることができてしまうのかがよくわかりません。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
36
46
|
|
37
47
|
|
38
48
|
|
4
質問のアップデート
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,10 +1,38 @@
|
|
1
1
|
独自メソッドを用いてvalidateを行いたいと考えていましたがうまく行きません。ネット上にはhas_manyのバリデーションの仕方など掲載されておりましたがthroughを含めたものは見た限りありませんでした。
|
2
2
|
|
3
|
-
フォローできる人数を
|
3
|
+
自分が開発しているアプリ内でフォローできる人数を1人以下にしたいです。つまり、フォローできる人数を0人か1人に限りたいです。そこでバリデーションを設置する事で2人以上の人をフォローをした時にエラーが表示されるようにしたいです。
|
4
4
|
|
5
|
+
|
6
|
+
|
5
|
-
以下のコードではバリデーションに引っかからず
|
7
|
+
以下のコードではバリデーションに引っかからず2人以上の人をフォローできるようになってしまいます。
|
6
8
|
|
7
9
|
よろしくお願いします。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
やった事として、rails consoleを開き
|
14
|
+
|
15
|
+
```ここに言語を入力
|
16
|
+
|
17
|
+
first_following=Relationship.create(follower_id: "1", followed_id: "2")
|
18
|
+
|
19
|
+
second_following=Relationship.create(follower_id: "1", followed_id: "3")
|
20
|
+
|
21
|
+
```
|
22
|
+
|
23
|
+
上のコードを入力してレコードを作成し、2つともレコードが作成されました。エラーやレコードを作成できない
|
24
|
+
|
25
|
+
といったメッセージは表示されませんでした。
|
26
|
+
|
27
|
+
確認として,以下のコードを入力して2が出力され、2人フォローできていることも確認できました。
|
28
|
+
|
29
|
+
```ここに言語を入力
|
30
|
+
|
31
|
+
me=Account.find_by(id:"1")
|
32
|
+
|
33
|
+
me.following.count
|
34
|
+
|
35
|
+
```
|
8
36
|
|
9
37
|
|
10
38
|
|
@@ -138,7 +166,7 @@
|
|
138
166
|
|
139
167
|
|
140
168
|
|
141
|
-
if Account.find(followed_id).following.count >
|
169
|
+
if Account.find(followed_id).following.count > 1
|
142
170
|
|
143
171
|
|
144
172
|
|
3
コード修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -138,11 +138,11 @@
|
|
138
138
|
|
139
139
|
|
140
140
|
|
141
|
-
if
|
141
|
+
if Account.find(followed_id).following.count >= 1
|
142
142
|
|
143
143
|
|
144
144
|
|
145
|
-
errors.add(:followi
|
145
|
+
errors.add(:followed_id, "too much following")
|
146
146
|
|
147
147
|
|
148
148
|
|
2
コード編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
-
|
25
|
+
|
26
26
|
|
27
27
|
devise :database_authenticatable, :registerable,
|
28
28
|
|
@@ -94,23 +94,7 @@
|
|
94
94
|
|
95
95
|
|
96
96
|
|
97
|
-
|
97
|
+
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
if active_relationships.following.count > 3
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
errors.add(:following, "too much following")
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
end
|
112
|
-
|
113
|
-
end
|
114
98
|
|
115
99
|
|
116
100
|
|
@@ -146,7 +130,27 @@
|
|
146
130
|
|
147
131
|
belongs_to :followed, class_name: "Account", optional: true
|
148
132
|
|
149
|
-
|
133
|
+
validate :check_following
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
def check_following
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
if active_relationships.following.count > 3
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
errors.add(:following, "too much following")
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
150
154
|
|
151
155
|
|
152
156
|
|
1
タイトル変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
validate
|
1
|
+
validate(バリデーション)が機能しません
|
test
CHANGED
File without changes
|