質問編集履歴
8
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
Geoモデルにはテーブルはないので ActiveRecord ではなく ActiveModel をオーバーライドするため
|
30
30
|
create でバリデーションを呼ぶことができず
|
31
31
|
|
32
|
-
親モデルの before_save の中でバリデーション
|
32
|
+
親モデルの before_save の中でバリデーションしようと思ったのですが
|
33
33
|
before_save はバリデーションの後によばれるため
|
34
34
|
他のバリデーションの後に個別にチェックする必要があって
|
35
35
|
|
7
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
あるいは
|
45
45
|
`validates :geo, geo.validates`
|
46
46
|
のように特定のカラムのバリデーションだけ、
|
47
|
-
|
47
|
+
active record ではないモデルに委ねるみたいなことはできるんでしょうか
|
48
48
|
|
49
49
|
|
50
50
|
あと… 保存処理をまだかいていないのですが
|
6
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -30,6 +30,8 @@
|
|
30
30
|
create でバリデーションを呼ぶことができず
|
31
31
|
|
32
32
|
親モデルの before_save の中でバリデーションするしかないのですが
|
33
|
+
before_save はバリデーションの後によばれるため
|
34
|
+
他のバリデーションの後に個別にチェックする必要があって
|
33
35
|
|
34
36
|
```
|
35
37
|
if self.geo.invalid?
|
@@ -37,7 +39,7 @@
|
|
37
39
|
end
|
38
40
|
```
|
39
41
|
|
40
|
-
みたいにか
|
42
|
+
みたいにかきたいのですがバリデーションを失敗させるにはどうかけばいいんでしょうか
|
41
43
|
|
42
44
|
あるいは
|
43
45
|
`validates :geo, geo.validates`
|
5
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -26,9 +26,11 @@
|
|
26
26
|
|
27
27
|
バリデーションをいつどうやって実行すればいいかがわかりません
|
28
28
|
|
29
|
-
Geoモデルにはテーブルはないので
|
29
|
+
Geoモデルにはテーブルはないので ActiveRecord ではなく ActiveModel をオーバーライドするため
|
30
|
-
|
30
|
+
create でバリデーションを呼ぶことができず
|
31
31
|
|
32
|
+
親モデルの before_save の中でバリデーションするしかないのですが
|
33
|
+
|
32
34
|
```
|
33
35
|
if self.geo.invalid?
|
34
36
|
`バリデーション失敗を投げる # この部分の書き方がわからない`
|
4
質問内容の修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
バリデーション失敗を強制的に発生させる方法
|
body
CHANGED
@@ -1,6 +1,10 @@
|
|
1
|
-
親モデルの1つのカラムに Rectangle Circle Polygon といったポリモーフィック位置情報を保存したいのですが
|
2
|
-
|
1
|
+
### やりたいこと
|
3
2
|
|
3
|
+
親モデルの1つのカラムに Rectangle Circle Polygon といったポリモーフィック位置情報を
|
4
|
+
入力はタイプに応じた小数入力でデータベースには JSON で保存したい
|
5
|
+
|
6
|
+
### ためしたこと
|
7
|
+
|
4
8
|
form はJSでタイプを選択すると入力欄が変化するビューを作って
|
5
9
|
Circle の場合は
|
6
10
|
`geo => {type =>'circle', center_lat, center_lng, radius}`
|
@@ -16,7 +20,10 @@
|
|
16
20
|
end
|
17
21
|
```
|
18
22
|
|
19
|
-
のような感じでGeoを継承した個別インスタンスを作
|
23
|
+
のような感じでGeoを継承した個別インスタンスを作っています
|
24
|
+
|
25
|
+
### 発生している問題
|
26
|
+
|
20
27
|
バリデーションをいつどうやって実行すればいいかがわかりません
|
21
28
|
|
22
29
|
Geoモデルにはテーブルはないので create を呼ぶことができず
|
@@ -24,7 +31,7 @@
|
|
24
31
|
|
25
32
|
```
|
26
33
|
if self.geo.invalid?
|
27
|
-
バリデーション失敗を投げる # この部分の書き方がわからない
|
34
|
+
`バリデーション失敗を投げる # この部分の書き方がわからない`
|
28
35
|
end
|
29
36
|
```
|
30
37
|
|
3
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -35,13 +35,14 @@
|
|
35
35
|
のように特定のカラムのバリデーションだけ、
|
36
36
|
そのカラムの別クラスに委ねるみたいなことはできるんでしょうか
|
37
37
|
|
38
|
+
|
38
|
-
保存処理をまだかいていないのですが
|
39
|
+
あと… 保存処理をまだかいていないのですが
|
39
40
|
カラム自体は String で JSON で保存しようと思っています
|
40
41
|
before_save で
|
41
42
|
`self.geo = self.geo.to_json`
|
42
43
|
のようにかけば保存されるときだけモデルからJSON文字列になってくれるんでしょうか
|
43
|
-
``
|
44
44
|
|
45
|
+
|
45
46
|
同じカラム名で Rails 上ではモデルで保存するときだけ JSON みたいにするのは
|
46
47
|
どこでどっちの状態になってるか混乱してしまって…
|
47
48
|
普通はこういうことはやらないのでしょうか
|
2
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
```
|
14
14
|
def geo=(val)
|
15
|
-
@geo = Geo.generate(val)
|
15
|
+
@geo = Geo.generate(val) # Circle や Rectangle といったインスタンスができる
|
16
16
|
end
|
17
17
|
```
|
18
18
|
|
1
質問内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -35,4 +35,14 @@
|
|
35
35
|
のように特定のカラムのバリデーションだけ、
|
36
36
|
そのカラムの別クラスに委ねるみたいなことはできるんでしょうか
|
37
37
|
|
38
|
+
保存処理をまだかいていないのですが
|
39
|
+
カラム自体は String で JSON で保存しようと思っています
|
40
|
+
before_save で
|
41
|
+
`self.geo = self.geo.to_json`
|
42
|
+
のようにかけば保存されるときだけモデルからJSON文字列になってくれるんでしょうか
|
43
|
+
``
|
44
|
+
|
45
|
+
同じカラム名で Rails 上ではモデルで保存するときだけ JSON みたいにするのは
|
46
|
+
どこでどっちの状態になってるか混乱してしまって…
|
47
|
+
普通はこういうことはやらないのでしょうか
|
38
48
|
自分でもまだ整理しきれていなくて質問がわかりにくくてすみません
|