質問編集履歴

3

yml内の欠落を追記。

2016/06/07 04:01

投稿

shanxia
shanxia

スコア1038

test CHANGED
File without changes
test CHANGED
@@ -100,6 +100,16 @@
100
100
 
101
101
  activerecord:
102
102
 
103
+ attributes:
104
+
105
+ sample:
106
+
107
+ name: "社員ID"
108
+
109
+ sample1:
110
+
111
+ name: "備品ID"
112
+
103
113
  errors:
104
114
 
105
115
  messages:

2

回答を受けて、解決策を追記。

2016/06/07 04:01

投稿

shanxia
shanxia

スコア1038

test CHANGED
File without changes
test CHANGED
@@ -49,3 +49,67 @@
49
49
 
50
50
 
51
51
  以上になります。ご教授お願いします。
52
+
53
+
54
+
55
+ === 回答を受けたあと、解決策を追記 ===
56
+
57
+ 以下の様な形で実現できました。
58
+
59
+
60
+
61
+ ```ruby
62
+
63
+ class Sample < ActiveRecord::Base
64
+
65
+ validates :name, name: true
66
+
67
+ end
68
+
69
+
70
+
71
+ # バリデーター
72
+
73
+ class NameValidator < ActiveModel::EachValidator
74
+
75
+ def validate_each(record, attribute, value)
76
+
77
+ if value.blank?
78
+
79
+ record.errors[attribute] << I18n.t('activerecord.errors.messages.blank')
80
+
81
+ elsif value.length > 50
82
+
83
+ record.errors[attribute] << I18n.t('activerecord.errors.messages.too_long', :count => 50)
84
+
85
+ elsif...
86
+
87
+ # 省略
88
+
89
+ end
90
+
91
+ end
92
+
93
+ end
94
+
95
+
96
+
97
+ application_ja.yml
98
+
99
+ ja:
100
+
101
+ activerecord:
102
+
103
+ errors:
104
+
105
+ messages:
106
+
107
+ blank: "は必須項目です。"
108
+
109
+ too_long: "は#{count}文字までです。"
110
+
111
+ ```
112
+
113
+
114
+
115
+ 回答ありがとうございました。

1

PGM内の誤植を修正

2016/06/07 03:59

投稿

shanxia
shanxia

スコア1038

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Modelの中で、画面からの入力内容を確認するためにvalidatesを書くことが多いと思いますが、その内容を他のModelからも使い回す事はできないでしょうか。
6
6
 
7
- いくつか画面はあるのですが、IDの様な項目はどれも同じ様なチェックを行いたいので、できるだけ1カ所にまとめたいと考えています。
7
+ いくつか画面はあるのですが、IDの様な項目はどれも同じルールでチェックを行いたいので、できるだけ1カ所にまとめたいと考えています。
8
8
 
9
9
 
10
10
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  class Sample < ActiveRecord::Base
16
16
 
17
- validates :name, presence: true, length: { maximum: 50 }, format{ without: /[<|>|&]/}
17
+ validates :name, presence: true, length: { maximum: 50 }, format: { without: /[<|>|&]/}
18
18
 
19
19
  end
20
20
 
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
 
25
- カスタムバリデーションを使えば良いのかと思ったのですが、それを呼ぶだけだとエラーメッセージまで共通になってしまうので、それはやりたくないと思っています。
25
+ カスタムバリデーションを使えば良いのかと思ったのですが、それをModelから呼ぶだけだとエラーメッセージまで共通になってしまうので、それはやりたくないと思っています。
26
26
 
27
27
  画面毎のIDには、異なる項目名をつけているので、例えば次の様にエラーメッセージは分けたいと考えています。
28
28