質問編集履歴

2

補足の方で、sqlについてのことを追加いたしました。

2018/05/19 11:06

投稿

mockn
mockn

スコア6

test CHANGED
File without changes
test CHANGED
@@ -313,3 +313,9 @@
313
313
 
314
314
 
315
315
  おそらく Ruby on Rails の最新のものが使えているかと思います。
316
+
317
+
318
+
319
+ Sqlite3を使っているのですが、itermでは動かすことは難しいのでしょうか?
320
+
321
+ 現在、sqlite3には接続?できているのですが、それ以降の作業ができていません…。

1

次のファイルを追加いたしました。【models/concerns/tosyo.rb】【migrate/2018~…_create_tosyos.rb】

2018/05/19 11:06

投稿

mockn
mockn

スコア6

test CHANGED
File without changes
test CHANGED
@@ -120,6 +120,184 @@
120
120
 
121
121
  ```
122
122
 
123
+ ```
124
+
125
+ 【models/concerns/tosyo.rb】
126
+
127
+ class Tosyo < ApplicationRecord
128
+
129
+ #期限のアクセサー(画面入力用)
130
+
131
+ attr_accessor :kigen_str
132
+
133
+
134
+
135
+ #kanryo(文字列)の値がある場合、絞り込みを行う
136
+
137
+ scope :by_kanryo, ->(kanryo){
138
+
139
+ if kanryo.present?
140
+
141
+ #bool型の変数
142
+
143
+ kanryo_bool = true
144
+
145
+ if kanryo == "true"
146
+
147
+ kanryo_bool = true
148
+
149
+ else
150
+
151
+ kanryo_bool = false
152
+
153
+ end
154
+
155
+ where('kanryo = ?', kanryo_bool)
156
+
157
+ end
158
+
159
+ }
160
+
161
+ validate :check_name
162
+
163
+ validate :check_shosai
164
+
165
+ validate :check_kigen_str
166
+
167
+
168
+
169
+ private
170
+
171
+
172
+
173
+ #nameのバリデーション
174
+
175
+ def check_name
176
+
177
+ if !name.present?
178
+
179
+ errors.add("図書","を入力してください")
180
+
181
+ elsif name.length > 20
182
+
183
+ errors.add("図書","は20文字以内で入力してください")
184
+
185
+ end
186
+
187
+ end
188
+
189
+
190
+
191
+ #shosaiのバリデーション
192
+
193
+ def check_shosai
194
+
195
+ if shosai.present? && shosai.length > 100
196
+
197
+ errors.add("著者","は100文字以内で入力してください")
198
+
199
+ end
200
+
201
+ end
202
+
203
+
204
+
205
+ #kigen_strのバリデーション
206
+
207
+ def check_kigen_str
208
+
209
+ if kigen_str.present? && !is_yyyymmdd?(kigen_str)
210
+
211
+ errors.add("期限","のフォーマットが不正です")
212
+
213
+ end
214
+
215
+ end
216
+
217
+
218
+
219
+ #文字列がyyyyMMdd型であるか
220
+
221
+ def is_yyyymmdd?(yyyymmdd)
222
+
223
+ if !yyyymmdd.present?
224
+
225
+ return false
226
+
227
+ end
228
+
229
+ if yyyymmdd.length != 8
230
+
231
+ return false
232
+
233
+ end
234
+
235
+ if !(yyyymmdd =~ /^[0-9]+$/)
236
+
237
+ return false
238
+
239
+ end
240
+
241
+
242
+
243
+ result = true
244
+
245
+ begin
246
+
247
+ yyyy = yyyymmdd[0..3].to_i
248
+
249
+ mm = yyyymmdd[4..5].to_i
250
+
251
+ dd = yyyymmdd[6..7].to_i
252
+
253
+ Date.new(yyyy,mm,dd)
254
+
255
+ rescue
256
+
257
+ result = false
258
+
259
+ end
260
+
261
+ result
262
+
263
+ end
264
+
265
+
266
+
267
+ end
268
+
269
+ ```
270
+
271
+
272
+
273
+ ```
274
+
275
+ 【migrate/2018~…_create_tosyos.rb】
276
+
277
+ class CreateTosyos < ActiveRecord::Migration[5.1]
278
+
279
+ def change
280
+
281
+ create_table :tosyos do |t|
282
+
283
+ t.string :name
284
+
285
+ t.string :shosai
286
+
287
+ t.datetime :kigen
288
+
289
+ t.boolean :kanryo
290
+
291
+ t.timestamps
292
+
293
+ end
294
+
295
+ end
296
+
297
+ end
298
+
299
+ ```
300
+
123
301
 
124
302
 
125
303
  ### 試したこと