ユーザー依存ロジックをモデルに集める- record_with_operatorの紹介大場光一郎                                   Meadowy.org大場寧子                        ...
多くのWebアプ          リケーションでは          ユーザーを扱う2009年8月26日水曜日
ユーザーとモデル          にまつわるニーズ2009年8月26日水曜日
例1:          データを作成/更新した           ユーザーを記録したい2009年8月26日水曜日
例2:                   許す操作を                ユーザー毎に変えたい2009年8月26日水曜日
そうなると2009年8月26日水曜日
モデルでは          ユーザーが知りたい2009年8月26日水曜日
こんな風に                def some_callback                 if user && user.admin?                   ....                 end  ...
実装戦略2009年8月26日水曜日
ActiveScaffold               方式2009年8月26日水曜日
モデルが                 Controllerの                current_user                メソッドをたたく2009年8月26日水曜日
MVC的に                スマート                 でない2009年8月26日水曜日
モデルにとっての                「ユーザー」は                current_user                    か?2009年8月26日水曜日
常にそうとはいえない       •モデルだけを動作させると        きは?       •ログインユーザーではない        ユーザーのための権限を        チェックするときは?2009年8月26日水曜日
そこで2009年8月26日水曜日
record        _with        _operator2009年8月26日水曜日
record_with_operator                •  Railsプラグイン                • MITライセンス                • http://github.com/nay/       ...
install                gem install nay-                record_with_operator --                source http://              ...
ActiveRecordオブ          ジェクトに operator          という属性を追加2009年8月26日水曜日
データベースに          created_by カラムが          あれば自動的に          operator.idを記録2009年8月26日水曜日
同じく          updated_by          deleted_by          も記録2009年8月26日水曜日
created_byがあれば          関連creatorで          ユーザーオブジェクトを          取得できる2009年8月26日水曜日
同じく          updater          deleter          もとれる2009年8月26日水曜日
operator          は伝搬する2009年8月26日水曜日
operatorの伝搬       •関連オブジェクト       •関連越しに得たオブジェク            ト2009年8月26日水曜日
こんな風に                parent.operator = user                parent.children.each do ¦c¦                 c.operator # => use...
つまり2009年8月26日水曜日
1回入れればOK                def some_filter                 @my_record =                MyModel.find(params[:id])               ...
:forオプション                def some_filter                 @my_record =                MyModel.find(params[:id],              ...
ここまでが          record_with_o          peratorの仕事2009年8月26日水曜日
応用2009年8月26日水曜日
1.          named_s          cope2009年8月26日水曜日
こんなのが作れる         # @company の operator に         # セットされたユーザーに許された         # ノートを検索する         notes =         @company.not...
関連の拡張とか          無名スコープとか          使うとできる2009年8月26日水曜日
2. 必ず          操作者を記          録させる2009年8月26日水曜日
適当にモジュール          つくって例外なげ          る2009年8月26日水曜日
例外         @company.save         # operator入れてないと例外出す         # ように自分で制限を強くする         # こともできる2009年8月26日水曜日
堅くなるけど、現          実的には常に操作          者がいるとは限ら          ないので注意2009年8月26日水曜日
3. フラグと          の合わせ技2009年8月26日水曜日
operator が管          理者ユーザーでも          管理機能でなかっ          たら無視する2009年8月26日水曜日
管理機能フラグ         def some_admin_filter          current_user.as_admin            = true         end2009年8月26日水曜日
モデルで判定         if operator.as_admin?           ...         end2009年8月26日水曜日
実績                •某EC                • 某ポータル2009年8月26日水曜日
recode_with_operator                •  協力者募集!                • http://github.com/nay/                  record_with_operato...
Upcoming SlideShare
Loading in …5
×

Introduction of record_with_operator

2,546 views

Published on

Rails plugin to set created_by, updated_by, deleted_by to ActiveRecord objects. Supports associations.

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,546
On SlideShare
0
From Embeds
0
Number of Embeds
580
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introduction of record_with_operator

  1. 1. ユーザー依存ロジックをモデルに集める- record_with_operatorの紹介大場光一郎 Meadowy.org大場寧子 株式会社万葉2009-08-25;Mitaka.rb#04;Bistro Epices2009年8月26日水曜日
  2. 2. 多くのWebアプ リケーションでは ユーザーを扱う2009年8月26日水曜日
  3. 3. ユーザーとモデル にまつわるニーズ2009年8月26日水曜日
  4. 4. 例1: データを作成/更新した ユーザーを記録したい2009年8月26日水曜日
  5. 5. 例2: 許す操作を ユーザー毎に変えたい2009年8月26日水曜日
  6. 6. そうなると2009年8月26日水曜日
  7. 7. モデルでは ユーザーが知りたい2009年8月26日水曜日
  8. 8. こんな風に def some_callback if user && user.admin? .... end end2009年8月26日水曜日
  9. 9. 実装戦略2009年8月26日水曜日
  10. 10. ActiveScaffold 方式2009年8月26日水曜日
  11. 11. モデルが Controllerの current_user メソッドをたたく2009年8月26日水曜日
  12. 12. MVC的に スマート でない2009年8月26日水曜日
  13. 13. モデルにとっての 「ユーザー」は current_user か?2009年8月26日水曜日
  14. 14. 常にそうとはいえない •モデルだけを動作させると きは? •ログインユーザーではない ユーザーのための権限を チェックするときは?2009年8月26日水曜日
  15. 15. そこで2009年8月26日水曜日
  16. 16. record _with _operator2009年8月26日水曜日
  17. 17. record_with_operator • Railsプラグイン • MITライセンス • http://github.com/nay/ record_with_operator/tree2009年8月26日水曜日
  18. 18. install gem install nay- record_with_operator -- source http:// gems.github.com2009年8月26日水曜日
  19. 19. ActiveRecordオブ ジェクトに operator という属性を追加2009年8月26日水曜日
  20. 20. データベースに created_by カラムが あれば自動的に operator.idを記録2009年8月26日水曜日
  21. 21. 同じく updated_by deleted_by も記録2009年8月26日水曜日
  22. 22. created_byがあれば 関連creatorで ユーザーオブジェクトを 取得できる2009年8月26日水曜日
  23. 23. 同じく updater deleter もとれる2009年8月26日水曜日
  24. 24. operator は伝搬する2009年8月26日水曜日
  25. 25. operatorの伝搬 •関連オブジェクト •関連越しに得たオブジェク ト2009年8月26日水曜日
  26. 26. こんな風に parent.operator = user parent.children.each do ¦c¦ c.operator # => user end2009年8月26日水曜日
  27. 27. つまり2009年8月26日水曜日
  28. 28. 1回入れればOK def some_filter @my_record = MyModel.find(params[:id]) @my_record.operator = current_user end2009年8月26日水曜日
  29. 29. :forオプション def some_filter @my_record = MyModel.find(params[:id], :for => current_user) end2009年8月26日水曜日
  30. 30. ここまでが record_with_o peratorの仕事2009年8月26日水曜日
  31. 31. 応用2009年8月26日水曜日
  32. 32. 1. named_s cope2009年8月26日水曜日
  33. 33. こんなのが作れる # @company の operator に # セットされたユーザーに許された # ノートを検索する notes = @company.notes.authorized2009年8月26日水曜日
  34. 34. 関連の拡張とか 無名スコープとか 使うとできる2009年8月26日水曜日
  35. 35. 2. 必ず 操作者を記 録させる2009年8月26日水曜日
  36. 36. 適当にモジュール つくって例外なげ る2009年8月26日水曜日
  37. 37. 例外 @company.save # operator入れてないと例外出す # ように自分で制限を強くする # こともできる2009年8月26日水曜日
  38. 38. 堅くなるけど、現 実的には常に操作 者がいるとは限ら ないので注意2009年8月26日水曜日
  39. 39. 3. フラグと の合わせ技2009年8月26日水曜日
  40. 40. operator が管 理者ユーザーでも 管理機能でなかっ たら無視する2009年8月26日水曜日
  41. 41. 管理機能フラグ def some_admin_filter current_user.as_admin = true end2009年8月26日水曜日
  42. 42. モデルで判定 if operator.as_admin? ... end2009年8月26日水曜日
  43. 43. 実績 •某EC • 某ポータル2009年8月26日水曜日
  44. 44. recode_with_operator • 協力者募集! • http://github.com/nay/ record_with_operator/tree2009年8月26日水曜日

×