2009-12-24
今週のrailscasts
今週は、DBに保存はしないけどARのvalidationは使いたい時のコツについて。
例として、フォームの結果をDBに保存しないようなメールフォームをあげている。
途中まで普通に作る→DBテーブルとmigrationファイル消す→エラー(当たり前)。
そこでモデルファイルに
- self.columns
- self.column
の二つのメソッドを定義。columnメソッドで各カラムを宣言。するとテーブル無くてもエラーが出なくなり、activerecordの継承を残しておくことによってvalidates系のメソッドもつかえるように。
rake db:rollback
Rails2.0あたりから追加されてたっぽいけど全然使ってなかった。メモ
rake db:rollback STEP=n
STEPでロールバックするマイグレーションの数を指定できる。デフォルト1
あと
rake db:abort_if_pending_migrations
というのがあって、まだmigrateしてないファイルを探して表示してくれるらしい。これまでがんばってmigrateファイルを見てたのは無駄な苦労だったなー
参考
2009-12-15
helper_method
controllerのメソッドをviewでも使えるようにするメソッド
helper_method :current_user, :logged_in?
などとするとcurrent_userメソッドやlogged_in?メソッドがviewでも使えるようになる
今週のrailscasts
decraretive authorizationよりもっと軽い認可プラグインcancanについて。
Railscasts - Authorization with CanCan
ryanb's cancan at master - GitHub
認証部分はauthlogicなどの、current_userメソッドを定義しているプラグインを導入していることが前提なようだ。
- models/ability.rbにAbilityクラスを作るだけで使えるようになる(Userモデルに対しては何もしなくてもいいみたい)
- initializeメソッド中にcanメソッドを使って権限を定義
- canメソッドのブロック中に「自分の書いたコメントなら修正できる」みたいなロジックも書ける
- can?で権限があるかどうかをチェック
- RESTfulな作りならload_and_authorize_resourceメソッドをコントローラで宣言するだけで、対応するアクションの権限があるかどうか自動で見てくれる
authlogicとかRESTfulな作りであるとか前提条件が必要なものが多いけど、それらをクリアしてるなら使ってみる価値はありそうだと思った
2009-12-12
rescue_from
エラーのクラスを見て処理を振り分けるメソッド。rescue_actionでcase whenしてるのであんまつかわんけど一応メモ
rescue_from ActiveRecord::RecordInvalid, :with => :show_errors rescue_from 'MyAppError::Base' do |exception| render :xml => exception, :status => 500 end
2009-11-16
今週のrailscasts
DSLでユーザの権限設定が簡単にできるプラグインdeclaretive-authorizationについて。
Railscasts - Declarative Authorization
- ロールの名前ごとに、コントローラとアクションを指定できる
- 自分の書いたコメントなら修正できるみたいなこともブロック中に書くことで指定できる
複数のロールを設定するアプリを開発する場合に使えそう。