RailsGirls,more! 第16回 #railsgirlstokyo
10/13(月・祝)に開催された、RailsGilrs,more!に参加しました!
先日、RubyHirobaにて開催された RailsGirlsTokyo 4thのあとだったので、初めての方の参加もありました。
仲間が増えるよろこびよ。
私は今回もRSSリーダーを抱えていきました。
今回の目標は、管理者認証機能をつくることと、Herokuへのデプロイをすることです。
認証機能はdeviceをつかうことにした
deviceはもしかしたら、RailsGirlsTokyo 2ndに参加したときにトライしたことがあったかな…
といううろ覚え。
今回は管理者だけがログインできて、他の人はアプリが見られればOKというものを目指していたので、
方法はいろいろあったんですが、コーチと相談してdeviceでやることに。
これだと今後機能を拡張したいときにも役立つのかな?
ということでRailsGirlsのチュートリアルを参考にしました。
http://railsgirls.jp/devise/
ただしこれはRailsGirlsのチュートリアルで作成したアプリのためのものなので、
適宜読み替える必要がありました。
Userモデルでの機能
$ rails g device user
とすることでdevice機能をもったUserモデルが生成されるようで、
いきなり便利オプションのついたuser.rbが作成されます!
コーチと相談しながら、必要のないオプションは削除しました。
deviceコントローラを継承したコントローラを作成
コントローラの変更が必要だったので、それはこちらを参考にしました。
Rails – Deviseのコントローラをカスタマイズする方法 | 株式会社田村倉庫
RailsGirlsのチュートリアルのStep4あたりでやったんだったかな。
でないとSignupしてみようとしたときにエラーがでるはず。
before_filter でサインインユーザのみの権限を設定
今回は、フィードURLを追加したり変更したり削除したりすることを、サインインしているユーザにしか権限をあたえない、という設定にしたかったのです。
サインインは管理者しかできないことにするので、今回は管理者とか一般ユーザとかの区別はなし。
このときのコツとしては、逆説的な考え方でフィルターをかけるといいらしい。
どういうことかというと、
サインインしていなければaddとeditとdeleteは制限したい。
ではなく
サインインしていなければindexとshowしかできない。
という考え方にする、というもの。
実際、before_filterのところ、はじめは下記のように書いたんですが、これだと抜けがある。
before_filter :accessible_check, :only => [:new, :edit, :destroy]
create と update も、制限しないといけないんですよね。
だから下記のように書きかえます。
before_filter :accessible_check, :except => [:index, :show]
おー。
見落としが減るコツなんだそうです!メモ!!
Herokuのデプロイが(やっぱり)簡単だった
Railsチュートリアルでもたびたびデプロイしていて「ほんとに簡単だな〜」と思っていましたが、
やっぱり簡単でした〜。
RailsGirlsのチュートリアルがわかりやすいと思います。
http://railsgirls.jp/heroku/
built-inユーザをseedデータで用意した
デプロイしたアプリには認証機能がついていますので、最初にひとり登録しておかないと、何もできなくなってしまいます。
ということでbuilt-inユーザをseedデータで最初に流すようにして、
すぐにheroku consoleでパスワードなどを変更してしまいます。
…と今気づいたんですが、heroku consoleでユーザ情報を作ればいいから、
このseedデータいらなかったのでは…??
でも実務とかだと、built-inユーザを作って対応するのがお作法なのかな??
というわけで公開
一応、超最低限の要件を満たした状態でHerokuにデプロイしました!!
まだまだここから修正していくので、今はまだ「ベータ版」みたいな気持ち。
よちよちのみんなのブログが一覧できるアプリ、という位置づけなので、
よちよち一周年記念を目標にリリース(?)したいなぁ!
…と思ったら、よちよち.rbの第0回は11/19でした!
あと1か月しかない!!