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])
これでインスタント作れるようになった。