回答編集履歴

4

表現を微修正

2024/02/21 05:35

投稿

shinoharat
shinoharat

スコア1685

test CHANGED
@@ -1,16 +1,18 @@
1
1
  データが micropost.prefecture に文字列として保存されているので、一度配列に変換する必要があります。
2
- 一番手っ取り早いのは `JSON.parse` でしょうか。
2
+ 文字列から配列へ変換は `JSON.parse` 辺りが手っ取り早い
3
3
 
4
4
  ```erb
5
5
  <span class="prefecture"><%= JSON.parse(micropost.prefecture).join(",") %></span>
6
6
  ```
7
+
8
+ 文字列化された ruby のオブジェクトを json としてパースするのは少し強引ですが、単純な配列に限れば十分機能します。
7
9
 
8
10
  --
9
11
 
10
12
  もしDBがサポートしているなら、カラムを「配列型」や「json型」に変えてしまうという手もあります。
11
13
  自前での JSON.parse が不要になりますし、検索やインデックスの面でも有利です。
12
14
 
13
- 一応、PostgreSQL 用のリンクを貼っておす。
15
+ 以下は PostgreSQL 用のリンクですが、他のDBでも似たようなことがでるはずです。
14
16
  - [Active Record と PostgreSQL - 1.2 配列 | Rails ガイド](https://railsguides.jp/active_record_postgresql.html#%E9%85%8D%E5%88%97)
15
17
  - [Active Record と PostgreSQL - 1.4 JSONとJSONB | Rails ガイド](https://railsguides.jp/active_record_postgresql.html#json%E3%81%A8jsonb)
16
18
 

3

a

2024/02/21 04:56

投稿

shinoharat
shinoharat

スコア1685

test CHANGED
@@ -1,5 +1,5 @@
1
1
  データが micropost.prefecture に文字列として保存されているので、一度配列に変換する必要があります。
2
- 一番手っ取り早いのは `JSON.parse` でしょうか
2
+ 一番手っ取り早いのは `JSON.parse` でしょうか
3
3
 
4
4
  ```erb
5
5
  <span class="prefecture"><%= JSON.parse(micropost.prefecture).join(",") %></span>

2

a

2022/10/06 04:38

投稿

shinoharat
shinoharat

スコア1685

test CHANGED
@@ -8,7 +8,7 @@
8
8
  --
9
9
 
10
10
  もしDBがサポートしているなら、カラムを「配列型」や「json型」に変えてしまうという手もあります。
11
- 手動での JSON.parse が不要になりますし、検索やインデックスの面でも有利です。
11
+ 自前での JSON.parse が不要になりますし、検索やインデックスの面でも有利です。
12
12
 
13
13
  一応、PostgreSQL 用のリンクを貼っておきます。
14
14
  - [Active Record と PostgreSQL - 1.2 配列 | Rails ガイド](https://railsguides.jp/active_record_postgresql.html#%E9%85%8D%E5%88%97)

1

配列のリンクを追加

2022/10/06 04:37

投稿

shinoharat
shinoharat

スコア1685

test CHANGED
@@ -1,33 +1,20 @@
1
1
  データが micropost.prefecture に文字列として保存されているので、一度配列に変換する必要があります。
2
-
3
2
  一番手っ取り早いのは `JSON.parse` でしょうか?
4
3
 
5
-
6
-
7
4
  ```erb
8
-
9
5
  <span class="prefecture"><%= JSON.parse(micropost.prefecture).join(",") %></span>
10
-
11
6
  ```
12
-
13
-
14
7
 
15
8
  --
16
9
 
10
+ もしDBがサポートしているなら、カラムを「配列型」や「json型」に変えてしまうという手もあります。
11
+ 手動での JSON.parse が不要になりますし、検索やインデックスの面でも有利です。
17
12
 
18
-
19
- カラムを jsonb 型に変えてしまえば、手動での JSON.parse が不要となり、またインデックスも使えるようになります。
20
-
21
- ただし PostgreSQL 限定です。
13
+ 一応、PostgreSQL 用のリンクを貼っておきます。
22
-
14
+ - [Active Record と PostgreSQL - 1.2 配列 | Rails ガイド](https://railsguides.jp/active_record_postgresql.html#%E9%85%8D%E5%88%97)
23
- [Active Record と PostgreSQL - 1.4 JSONとJSONB | Rails ガイド](https://railsguides.jp/active_record_postgresql.html#json%E3%81%A8jsonb)
15
+ - [Active Record と PostgreSQL - 1.4 JSONとJSONB | Rails ガイド](https://railsguides.jp/active_record_postgresql.html#json%E3%81%A8jsonb)
24
-
25
-
26
16
 
27
17
  --
28
18
 
29
-
30
-
31
19
  データベースのカラムに配列を保存するという行為は、「ジェイウォーク」と呼ばれるアンチパターンである点には注意してください。
32
-
33
20
  詳しくは「SQLアンチパターン ジェイウォーク」でググれば色々情報が出てくると思います。