Rails チュートリアルを(10章まで)進めた

『ユーザーの更新・表示・削除』の部分。

REST

今回驚きだったのは、HTMLのフォームはRESTに対応していないというところ。

盲点だった。PATCHはまぁマイナーな感じがするので古いブラウザが対応していないのも分かるけど、PUTやDELETEも非対応だったとは…。Ajaxを使うようになった後にRESTの概念に触れたので、この辺知らなかった。

pagenate

サンプルコードの中で当然のごとくUser.paginate(page: params[:page])というような記述が出てきて戸惑った。

これはActive Recordの標準機能なのか、それともwill_paginateがオープンクラスの仕組みで付加したメソッドなのか。 調べてみると競合ライブラリkaminariではpageメソッドを使っているので、will_paginateによって可能になった機能っぽい。

kaminariのREADME.mdには「Does not globally pollute Array, Hash, Object or AR::Base.」(ArrayやHash,Object,AR:Baseをグローバルに汚染しません)と書いてある。じゃあkaminariのpageメソッドは何なのか。名前を変えられる機能があるから汚染してないという意味だろうか。

Rubyにはrefinementsという機能があるらしい。クラスへの外部からの機能追加を、明示的にusingしないと有効にならないようにする仕組み。

qiita.com

これを使ってるのかな、と思ったけどkaminariのサンプルコードにはusingが必要とは書いてないし、refineでコード検索してもprivateなメソッドで一箇所使われているだけだった。

やはりこの辺あんまり神経質にならずに機能追加していくのが流儀なのかな。便利だし。