[Rails 4.x] DB(MySQL, Postgres, SQLite3) に配列を挿入する


seed_fuを利用して、データをDBに入れたいのですが、配列データを挿入したくなりました。

Hogeというテーブルのchildrenというカラムに配列をいれたいという感じです。

DBのカラムのデータ型をtextにする

マイグレーションファイルをいじります。

db/migrate/*_create_hoge.rb
class CreateHoge < ActiveRecord::Migration
  def change
    create_table :hoge do |t|
      t.text :children

      t.timestamps
    end
  end
end

モデルで serialize を設定

配列を挿入したいカラム(属性)にserializeメソッドを適応させる用に設定する。

app/models/hoge.rb
class Hoge < ActiveRecord::Base
  serialize :children
end

参考

余談

seed_fuで入れる

私はseedデータを入れるのが目的だったので、入れてみました。

db/fixtures/hoges.rb
Hoge.seed do |s|
  s.id    = 1
  s.children = [1,2] # 1,2 と書いても配列が入りました(このへんはまだ曖昧です...)
rake db:seed_fu