Next-L Enju 開発ワークショップ #4

785 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
785
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Next-L Enju 開発ワークショップ #4

  1. 1. Next-L Enju 開発ワークショップ #4 「資料の統計」 2012年5月19日 田辺浩介
  2. 2. 前回からの主な進捗Next-L Enju Leaf 1.0.5.rc3リリースWindows上で動くことを確認 RailsInstallerを使用 手間はLinux/Macとあまり変わらない気がする
  3. 3. 図書館の統計情報の取得
  4. 4. 図書館に必要な統計貸出回数 資料ごと 利用者ごと予約回数 資料ごと 利用者ごと
  5. 5. 図書館に必要な統計蔵書数 館ごと 資料区分ごと 除籍冊数利用者数 登録者数
  6. 6. 図書館に必要な統計ほかにもなにが必要か考えてみよう!
  7. 7. 統計に関係するモデル書誌 (Manifestation), 所蔵 (Item)利用者 (User)貸出 (Checkout), 予約 (Reserve)図書館 (Library), 書架 (Shelf)件名 (Subject)ほかにもあるかも?
  8. 8. 決めること統計に必要なデータの管理はどのモデルの 役割かたとえば、「館ごとの蔵書数」 所蔵情報 (Item) 図書館 (Library) 書棚 (Shelf) 所蔵は書棚に属し、書棚は図書館に属するため
  9. 9. 組み立て戦略必要なモデルを選ぶ選んだモデル間の関連を追う集計に必要な属性がどのモデルに存在するかを 把握する
  10. 10. モデル間の関連
  11. 11. モデル間の関連1対1 belongs_to / has_one1対多 belongs_to / has_many has_one through多対多 has_many through
  12. 12. 1対1貸出1件に対する返却は1件返却1件に対する貸出は1件以下のファイルを見てみよう app/models/checkout.rb app/models/checkin.rb
  13. 13. 1対1貸出1件に対する返却は1件返却1件に対する貸出は1件以下のファイルを見てみよう app/models/checkout.rb app/models/checkin.rb
  14. 14. 1対多(1)1件の所蔵に対する貸出は複数存在1件の貸出に対する所蔵は1件以下のファイルを見てみよう app/models/item.rb app/models/checkout.rb
  15. 15. 1対多(2)1人の利用者に対する権限は1件1件の権限に対する利用者は複数以下のファイルを見てみよう app/models/user.rb app/models/user_has_role.rb app/models/role.rb
  16. 16. 多対多1件の書誌に対する出版者は複数存在1人の出版者に対する書誌は複数存在以下のファイルを見てみよう app/models/patron.rb app/models/produce.rb app/models/manifestation.rb
  17. 17. Railsでの関係の定義モデルとモデルの所属関係を決める所属される側のモデルに以下のカラムを追加 所属するモデルのモデル名を 単数形にし、さらに末尾に” _id”をつける データ型はinteger
  18. 18. 関連の定義例(1)BlogモデルとPostモデルが存在各モデルは以下のように作成されている $ rails g scaffold Blog title:string $ rails g scaffold Post body:text $ rake db:migrate を忘れないこと
  19. 19. 関連の定義例(2)BlogモデルとPostモデルが存在ひとつのBlogには複数のPostが存在Blog has_many PostsPost belongs_to Blog
  20. 20. 関連の定義例(3)app/models/blog.rbに以下を追加 has_many :postsapp/models/post.rbに以下を追加 belongs_to :blog
  21. 21. 関連の定義例(4)Postモデルにblog_idカラムを追加 rails g migration AddBlogIdToPost blog_id:integer
  22. 22. 関連の定義例(5)データを用意する rails c >> blog = Blog.create(:title => 田辺のブログ) >> post = Post.create(:body => Enju開発ワーク ショップに行ったよ)
  23. 23. 関連の定義例(6)関連を確認し設定する >> blog.posts # blogにひも付いているpostを取得 => [] >> blog.posts << post # postを追加 => [#<Post id: 1, body: "Enju開発ワークショップ に行ってきた", created_at: "2012-05-18 18:28:18", updated_at: "2012-05-18 18:29:35", blog_id: 1>] >> blog.posts # もう一度取得してみるBlogから見たPostは複数あるため、 メソッドが“ blog.posts”と複数形になってい
  24. 24. 関連の定義例(7)関連づけを逆方向から確認する >> post.blog => #<Blog id: 1, title: "田辺のブログ", created_at: "2012-05-18 18:28:04", updated_at: "2012-05-18 18:28:04">Postから見たBlogはひとつのため、 メソッドが“ post.blog”と単数形になっている
  25. 25. 実習(1)以下のように作成されたUserモデルがあります $ rails g model User email:stringひとりのUserはひとつだけBlogを作れるとしま すどのように関連を設定すればよいでしょうか
  26. 26. 実習(2)各自で図書館に必要な統計を考えてくださいその集計に必要なモデルを選び、関連を調べて ください関連をもとに、クエリを設定してください
  27. 27. 実習(2)図書館に必要な統計を考えようその集計に必要なモデルがどれかを選ぶ

×