質問編集履歴

6

内容の更新

2020/04/16 05:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,10 @@
1
1
  独自メソッドを用いてvalidateを行いたいと考えていましたがうまく行きません。ネット上にはhas_manyのバリデーションの仕方など掲載されておりましたがthroughを含めたものは見た限りありませんでした。
2
2
 
3
- 自分が開発しているアプリ内でフォローできる人数を1人以下にしたいです。つまり、フォローできる人数を0人か1人に限りたいです。そこでバリデーションを設置する事で2人以上の人をフォローをした時にエラーが表示されるようにしたいです。
3
+ 自分が開発しているアプリ内でフォローできる人数を8人以下にしたいです。そこでバリデーションを設置する事で8人以上の人をフォローをした時にエラーが表示されるようにしたいです。
4
-
5
-
6
-
4
+
5
+
6
+
7
- 以下のコードではバリデーションに引っかからず2人以上の人をフォローできるようになってしまいます。
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
+ 上のコードを入力してレコードを作成し、つともレコードが作成されました。エラーやレコードを作成できない
24
40
 
25
41
  といったメッセージは表示されませんでした。
26
42
 
27
- 確認として,以下のコードを入力してが出力され、人フォローできていることも確認できました。
43
+ 確認として,以下のコードを入力してが出力され、人フォローできていることも確認できました。
28
44
 
29
45
  ```ここに言語を入力
30
46
 
@@ -38,7 +54,7 @@
38
54
 
39
55
 
40
56
 
41
- これでバリデーションに問題があるというのはわかったのですが実際にどこに問題があり、なぜバリデーションが機能せず、人以上フォローすることができてしまうのかがよくわかりません。
57
+ これでバリデーションに問題があるというのはわかったのですが実際にどこに問題があり、なぜバリデーションが機能せず、人以上フォローすることができてしまうのかがよくわかりません。
42
58
 
43
59
 
44
60
 
@@ -176,7 +192,7 @@
176
192
 
177
193
 
178
194
 
179
- if Account.find(followed_id).following.count > 1
195
+ if Account.find(followed_id).following.count > 8
180
196
 
181
197
 
182
198
 

5

問題の明確化

2020/04/16 05:46

投稿

退会済みユーザー
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

質問のアップデート

2020/04/16 05:36

投稿

退会済みユーザー
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 >= 1
169
+ if Account.find(followed_id).following.count > 1
142
170
 
143
171
 
144
172
 

3

コード修正

2020/04/16 05:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -138,11 +138,11 @@
138
138
 
139
139
 
140
140
 
141
- if active_relationships.following.count > 3
141
+ if Account.find(followed_id).following.count >= 1
142
142
 
143
143
 
144
144
 
145
- errors.add(:following, "too much following")
145
+ errors.add(:followed_id, "too much following")
146
146
 
147
147
 
148
148
 

2

コード編集

2020/02/29 09:19

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
 
25
- validate :check_following
25
+
26
26
 
27
27
  devise :database_authenticatable, :registerable,
28
28
 
@@ -94,23 +94,7 @@
94
94
 
95
95
 
96
96
 
97
- def check_following
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

タイトル変更

2020/02/29 01:48

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- validate has_many through が機能しません
1
+ validate(バリデーション)が機能しません
test CHANGED
File without changes