formからの値をArrayでserializeしてるActiveRecordのカラムに設定をする

class User < ActiveRecord::Base
  serialize :aliases, Array
end
form_for(@user) do |f|
  = f.text_field :aliases

> User.new(params[:user])

serialize Arrayにしているのでセッターには文字列設定するとエラーになっちゃう。
text_fieldヘルパーだと文字列になっているし普段serialize使わないしどうしようかなと考えた結果ラッパー作ってしまえばmodel内で収まるのでよさそうだと思った。

class User < ActiveRecord::Base
  serialize :aliases, Array

  def aliase_list=(value)
    @aliases = value.split(/,/)
  end 
  
  def aliase_list
    @aliases.join(",")
  end
end
form_for(@user) do |f|
  = f.text_field :aliase_list

viewだとセパレータ(,)以外が入力されるのでtagitとか使うのがいいのではないか。

> User.new(params[:user])
これでインスタント作れるようになった。