地方でリモートワーク

プログラミング、先物、fx,仮想通貨なんでもやります

radio_buttonでenumで管理しているカラムにvalueを送ったらerrorが起きたときの対処法

スポンサーリンク

f:id:ihatov08:20160722225705p:plain

Railsでenumで管理しているinteger型のカラムにviewの中でradio_buttonでvalueを送信しようとしたら、errorが起きました。

<%= f.radio_button :sex, 1 %>

models/user.rb

class User < ActiveRecord::Base
  enum sex: [:female, :male]
end

このコードだと値を送信したときにstring型になってしまっているらしく、enumでセットしていない値を送信しようとするとエラーが起きてしまうようです。 enumではハッシュで値を指定しないと、0,1というデフォルト値が設定されます。

そんなときはenum作ったシンボルを指定するとRailsがうまいことやってくれます。

    <%= f.radio_button :sex, :female %>
    <%= f.radio_button :sex, :male %>

わざわざ0とか1とか書かなくていいんですね。 このほうがわかりやすいですね!

参考にしたサイト

[Rails] 固定の値はEnumを使おう | inter-arteq.com :: interaction between art and technology

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails