teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

コメントいただいたものを直しました

2018/10/15 12:20

投稿

yamady
yamady

スコア176

title CHANGED
File without changes
body CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  ソースコード
13
13
  > migrationfile
14
- ```
14
+ ```Ruby
15
15
  class AddDaysToSchedule < ActiveRecord::Migration[5.2]
16
16
  def change
17
17
  add_column :schedules, :days, :text, array: true
@@ -19,7 +19,7 @@
19
19
  end
20
20
  ```
21
21
  > schedule.rb
22
- ```
22
+ ```Ruby
23
23
  class Schedule < ApplicationRecord
24
24
  serialize :days, Array
25
25
  ・・・
@@ -29,4 +29,49 @@
29
29
 
30
30
  Postgresqlでは、どうやらserializeを使ってはいけないということは分かって
31
31
  schdule.rbを下記のserializeを外してみると実際にビルド自体は成功したのですが
32
- 出力する際に、arrayと認識してくれずstringとなってしまうため出力でエラーとなってしまいます。
32
+ 出力する際に、arrayと認識してくれずstringとなってしまうため出力でエラーとなってしまいます。
33
+
34
+ ### 追記
35
+
36
+ String型に保存して、その後配列に出力することを試みました。
37
+ > migrationfile
38
+ ```Ruby
39
+ class AddDaysToSchedule < ActiveRecord::Migration[5.2]
40
+ def change
41
+ add_column :schedules, :days, :string
42
+ end
43
+ end
44
+ ```
45
+
46
+ > daysを出力するコード
47
+ ```
48
+ [28] pry(#<EventType>)> self.days
49
+ => "[0, 1, 2, 3, 4, 5, 6]"
50
+ [29] pry(#<EventType>)> self.days.split('')
51
+ => ["[",
52
+ "0",
53
+ ",",
54
+ " ",
55
+ "1",
56
+ ",",
57
+ " ",
58
+ "2",
59
+ ",",
60
+ " ",
61
+ "3",
62
+ ",",
63
+ " ",
64
+ "4",
65
+ ",",
66
+ " ",
67
+ "5",
68
+ ",",
69
+ " ",
70
+ "6",
71
+ [30] pry(#<EventType>)> self.days.split
72
+ => ["[0,", "1,", "2,", "3,", "4,", "5,", "6]"]
73
+ ```
74
+ このやり方は取得したいデータではないのですが、
75
+ 文字列で保存して、配列をシリアライズ化する最適な方法はどんなやり方がございますでしょうか。
76
+
77
+ すみませんが、どうぞよろしくお願いいたします。