Contenu connexe
Plus de Koichiro Ohba (16)
Introduction of record_with_operator
- 2. 多くのWebアプ
リケーションでは
ユーザーを扱う
2009年8月26日水曜日
- 4. 例1:
データを作成/更新した
ユーザーを記録したい
2009年8月26日水曜日
- 5. 例2:
許す操作を
ユーザー毎に変えたい
2009年8月26日水曜日
- 7. モデルでは
ユーザーが知りたい
2009年8月26日水曜日
- 8. こんな風に
def some_callback
if user && user.admin?
....
end
end
2009年8月26日水曜日
- 11. モデルが
Controllerの
current_user
メソッドをたたく
2009年8月26日水曜日
- 12. MVC的に
スマート
でない
2009年8月26日水曜日
- 13. モデルにとっての
「ユーザー」は
current_user
か?
2009年8月26日水曜日
- 14. 常にそうとはいえない
•モデルだけを動作させると
きは?
•ログインユーザーではない
ユーザーのための権限を
チェックするときは?
2009年8月26日水曜日
- 16. record
_with
_operator
2009年8月26日水曜日
- 17. record_with_operator
• Railsプラグイン
• MITライセンス
• http://github.com/nay/
record_with_operator/tree
2009年8月26日水曜日
- 18. install
gem install nay-
record_with_operator --
source http://
gems.github.com
2009年8月26日水曜日
- 20. データベースに
created_by カラムが
あれば自動的に
operator.idを記録
2009年8月26日水曜日
- 21. 同じく
updated_by
deleted_by
も記録
2009年8月26日水曜日
- 23. 同じく
updater
deleter
もとれる
2009年8月26日水曜日
- 25. operatorの伝搬
•関連オブジェクト
•関連越しに得たオブジェク
ト
2009年8月26日水曜日
- 26. こんな風に
parent.operator = user
parent.children.each do ¦c¦
c.operator # => user
end
2009年8月26日水曜日
- 28. 1回入れればOK
def some_filter
@my_record =
MyModel.find(params[:id])
@my_record.operator =
current_user
end
2009年8月26日水曜日
- 29. :forオプション
def some_filter
@my_record =
MyModel.find(params[:id],
:for => current_user)
end
2009年8月26日水曜日
- 30. ここまでが
record_with_o
peratorの仕事
2009年8月26日水曜日
- 32. 1.
named_s
cope
2009年8月26日水曜日
- 33. こんなのが作れる
# @company の operator に
# セットされたユーザーに許された
# ノートを検索する
notes =
@company.notes.authorized
2009年8月26日水曜日
- 34. 関連の拡張とか
無名スコープとか
使うとできる
2009年8月26日水曜日
- 35. 2. 必ず
操作者を記
録させる
2009年8月26日水曜日
- 37. 例外
@company.save
# operator入れてないと例外出す
# ように自分で制限を強くする
# こともできる
2009年8月26日水曜日
- 38. 堅くなるけど、現
実的には常に操作
者がいるとは限ら
ないので注意
2009年8月26日水曜日
- 41. 管理機能フラグ
def some_admin_filter
current_user.as_admin
= true
end
2009年8月26日水曜日
- 42. モデルで判定
if operator.as_admin?
...
end
2009年8月26日水曜日
- 43. 実績
•某EC
• 某ポータル
2009年8月26日水曜日