Hatena::Grouprails

おもしろWEBサービス開発日記のrailsメモ

2009-12-24

今週のrailscasts

18:22 | 今週のrailscasts - おもしろWEBサービス開発日記のrailsメモ を含むブックマーク はてなブックマーク - 今週のrailscasts - おもしろWEBサービス開発日記のrailsメモ

今週は、DBに保存はしないけどARのvalidationは使いたい時のコツについて。

Railscasts - Tableless Model

例として、フォームの結果をDBに保存しないようなメールフォームをあげている。

途中まで普通に作る→DBテーブルとmigrationファイル消す→エラー(当たり前)。

そこでモデルファイルに

  • self.columns
  • self.column

の二つのメソッドを定義。columnメソッドで各カラムを宣言。するとテーブル無くてもエラーが出なくなり、activerecord継承を残しておくことによってvalidates系のメソッドもつかえるように。

個人的にはこういう時には万一に備えてDBにいれとくけどねー(Ryan)。まあ自分もDBにいれちゃうかも。

rake db:rollback

18:16 | rake db:rollback - おもしろWEBサービス開発日記のrailsメモ を含むブックマーク はてなブックマーク - rake db:rollback - おもしろWEBサービス開発日記のrailsメモ

Rails2.0あたりから追加されてたっぽいけど全然使ってなかった。メモ

rake db:rollback STEP=n

STEPでロールバックするマイグレーションの数を指定できる。デフォルト1

あと

rake db:abort_if_pending_migrations

というのがあって、まだmigrateしてないファイルを探して表示してくれるらしい。これまでがんばってmigrateファイルを見てたのは無駄な苦労だったなー

参考

マイグレーション関連のRakeタスクの再確認 - ひげろぐ

2009-12-15

helper_method

16:43 | helper_method - おもしろWEBサービス開発日記のrailsメモ を含むブックマーク はてなブックマーク - helper_method - おもしろWEBサービス開発日記のrailsメモ

controllerのメソッドをviewでも使えるようにするメソッド

helper_method :current_user, :logged_in?

などとするとcurrent_userメソッドやlogged_in?メソッドがviewでも使えるようになる

今週のrailscasts

15:44 | 今週のrailscasts - おもしろWEBサービス開発日記のrailsメモ を含むブックマーク はてなブックマーク - 今週のrailscasts - おもしろWEBサービス開発日記のrailsメモ

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

14:20 | rescue_from - おもしろWEBサービス開発日記のrailsメモ を含むブックマーク はてなブックマーク - rescue_from - おもしろWEBサービス開発日記のrailsメモ

エラーのクラスを見て処理を振り分けるメソッド。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

23:49 | 今週のrailscasts - おもしろWEBサービス開発日記のrailsメモ を含むブックマーク はてなブックマーク - 今週のrailscasts - おもしろWEBサービス開発日記のrailsメモ

DSLでユーザの権限設定が簡単にできるプラグインdeclaretive-authorizationについて。

Railscasts - Declarative Authorization

  • ロールの名前ごとに、コントローラとアクションを指定できる
  • 自分の書いたコメントなら修正できるみたいなこともブロック中に書くことで指定できる

複数のロールを設定するアプリを開発する場合に使えそう。