Tech Racho エンジニアの「?」を「!」に。
  • 開発

Devise 3.0.2 でRails4 対応についてREADME に少し騙された話

Rails で認証系のGem で人気があるものといえばDevise かと思うのですが、Rails4 対応で少しはまったのでメモ。なお予め断っておきますと、これは2013年8月28日現在での問題であり今後すぐに問題なくなるかと思います。

Rails4 からStrongParameters が導入されましたが、Devise も同じくStrongParametersへの対応が図られています。例えばusers テーブルを作ったとして、そこにDevise が必須としている以外のカラムを追加したいと思った場合、今まではモデルにattr_accessibleを書いていたかと思いますが、今後StrongParametersでそのカラムを指定してやる必要があります。

このことについてはDevise のREADME の該当箇所にも書かれています。ここの解説によると「devise_parameter_sanitizer.for」を使え、とあります。

これは楽だなと思っていたのですが、しかし動かそうとしてみると何故かNoMethodError が。

少し探してみるとIssue にこのようなものが。devise_parameter_sanitizer.for(:sign_up) << :something raises an error

え?RC 版でしかリリースしてないんですか?(´・ω・`; (注:現在正式版は3.0.2 が最新)

というわけで、上記メソッドを使いたくてもRC 版を使いたくない方は正式版がリリースされるまでもう少し待つ必要がある模様です。README にはもう書かれているのに…。

追記

3.0.2 のREADME はIssue で指摘を受けた後に訂正されていました。

また、正確にはdevise_parameter_sanitizer.for() <<が未対応です。
devise_parameter_sanitizer.for() {}については3.0.2 でも使用可能です。合わせて訂正いたします。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。