回答編集履歴

4

さらに内容追記

2018/08/06 08:04

投稿

kazto
kazto

スコア7196

test CHANGED
@@ -37,3 +37,47 @@
37
37
  頭で考えた形式ではなく、実際に存在しているデータを示していただけると、より回答しやすくなると思います。
38
38
 
39
39
  (CSVファイルだったりしますでしょうか?)
40
+
41
+
42
+
43
+ ---
44
+
45
+ 入力データの形式が判明したため、追記します。
46
+
47
+
48
+
49
+ 以下のように愚直に連結するしかないかなーと思います。
50
+
51
+ ```Ruby
52
+
53
+ sample = PersonalLog.all
54
+
55
+ h = {}
56
+
57
+ sample.each do |x|
58
+
59
+ h2 = {}
60
+
61
+ x.data.each do |key, val|
62
+
63
+ if h2[key].nil?
64
+
65
+ # キーに対応する値が無ければ、そのまま値を代入する
66
+
67
+ h2[key] = val
68
+
69
+ else
70
+
71
+ # キーに対応する値が存在するときは、カンマで連結する
72
+
73
+ h2[key] = [h2[key], val].join(",")
74
+
75
+ end
76
+
77
+ end
78
+
79
+ h.[x.macaddr]=h2
80
+
81
+ end
82
+
83
+ ```

3

内容訂正

2018/08/06 08:04

投稿

kazto
kazto

スコア7196

test CHANGED
@@ -16,11 +16,9 @@
16
16
 
17
17
  ```Ruby
18
18
 
19
- [{"32:5A:3D:87:21:AA" =>"{"uid":"dfasdfas","email":"apple@gmail.com"}",
19
+ [{"32:5A:3D:87:21:AA" =>"{"email":"bunana@gmail.com","phone":"080-4345-xx23"}",
20
20
 
21
- "32:5A:3D:87:21:AA" =>"{"uid":"kdjfasdf","email":"apple@gmail.com"}",
21
+ ...
22
-
23
- "32:5A:3D:87:21:AA" =>"{"email":"bunana@gmail.com","phone":"080-4345-xx23"}",
24
22
 
25
23
  }]
26
24
 
@@ -37,3 +35,5 @@
37
35
  連結文字を「:」にしても同じことです。
38
36
 
39
37
  頭で考えた形式ではなく、実際に存在しているデータを示していただけると、より回答しやすくなると思います。
38
+
39
+ (CSVファイルだったりしますでしょうか?)

2

さらに内容訂正

2018/08/06 07:02

投稿

kazto
kazto

スコア7196

test CHANGED
@@ -25,3 +25,15 @@
25
25
  }]
26
26
 
27
27
  ```
28
+
29
+ ---
30
+
31
+ すみません、キーが同じだったですね。。。
32
+
33
+ この場合、警告が出るとともに、最後のキーのみ有効になります。
34
+
35
+
36
+
37
+ 連結文字を「:」にしても同じことです。
38
+
39
+ 頭で考えた形式ではなく、実際に存在しているデータを示していただけると、より回答しやすくなると思います。

1

内容訂正

2018/08/06 07:00

投稿

kazto
kazto

スコア7196

test CHANGED
@@ -8,4 +8,20 @@
8
8
 
9
9
  ```
10
10
 
11
- 上記の表現は配列、ハッシュの表現がごちゃまぜになっており、Rubyのシンックスして不正です。
11
+ 上記の表現は配列、ハッシュの表現がごちゃまぜになっており、意図したデーになっていない思われます。
12
+
13
+ `=>`で連結されたデータはハッシュとなりますが、`[]`で囲われているので、正確には以下のようになります。
14
+
15
+
16
+
17
+ ```Ruby
18
+
19
+ [{"32:5A:3D:87:21:AA" =>"{"uid":"dfasdfas","email":"apple@gmail.com"}",
20
+
21
+ "32:5A:3D:87:21:AA" =>"{"uid":"kdjfasdf","email":"apple@gmail.com"}",
22
+
23
+ "32:5A:3D:87:21:AA" =>"{"email":"bunana@gmail.com","phone":"080-4345-xx23"}",
24
+
25
+ }]
26
+
27
+ ```