sub resources rails plug-in

43
sub_resources Rails Plugin Yasuko Ohba @nay3 20091128日土曜日

Upload: nay

Post on 19-Jan-2015

2.175 views

Category:

Technology


0 download

DESCRIPTION

The presentation in LT of RubyConf2009 about sub_resources rails plug-in.http://github.com/nay/sub_resources

TRANSCRIPT

Page 1: Sub Resources Rails Plug-in

sub_resourcesRails PluginYasuko Ohba

@nay3

2009年11月28日土曜日

Page 2: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

Who I am•Yasuko Ohba•I love Ruby•working with Ruby on Rails

•CEO of Everyleaf Corporation

2009年11月28日土曜日

Page 3: Sub Resources Rails Plug-in

Everyleaf Corporation

2009年11月28日土曜日

Page 4: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

Translating This Book

2009年11月28日土曜日

Page 5: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

Ruby on RailsQuick Reference

2009年11月28日土曜日

Page 6: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

The first time

2009年11月28日土曜日

Page 7: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

sub_resources

•a Rails plugin•it extends map.resources

2009年11月28日土曜日

Page 9: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

How many people know routes.rb ?

2009年11月28日土曜日

Page 10: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

routes.rbbecomes messy

2009年11月28日土曜日

Page 11: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

if you needRESTful URLs

2009年11月28日土曜日

Page 12: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

2 major reasons

2009年11月28日土曜日

Page 13: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

1. sub resources in a controller

2009年11月28日土曜日

Page 14: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

what does ‘sub resources’

mean?

2009年11月28日土曜日

Page 15: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

examples

•Tags•Notifications•Images

2009年11月28日土曜日

Page 16: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

tags

Tag

Review

Author

Book

Tagging

2009年11月28日土曜日

Page 17: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

How aboutcontrollers?

2009年11月28日土曜日

Page 18: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

you never want this

•BooksTagsController•AuthorsTagsController•ReviewsTagsController•etc...

2009年11月28日土曜日

Page 19: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

instead

BooksController

AuthorsController

ReviewsController

TagService

2009年11月28日土曜日

Page 20: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

Not nice forthe regular

map.resources

2009年11月28日土曜日

Page 21: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

Nested Resources ?

map.resources :books do |books| books.resources :tagsend

2009年11月28日土曜日

Page 22: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

use options of map.resources ?

2009年11月28日土曜日

Page 23: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

it generatesstrange route

namesmap.resources :books, :member => {:tags => :get}

tags_book_path

GET /books/3/tags

2009年11月28日土曜日

Page 24: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

it generatesurls including a

verb

destroy_tag_book_path

DELETE /books/3/destroy_tag

map.resources :books, :member => {:destroy_tag => :delete}

2009年11月28日土曜日

Page 25: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

to fix thismap.book_tags 'books/:id/tags', :controller => 'books', :action => 'tags', :conditions => {:method => :get}

map.book_tag 'books/:id/tag/:tag_id', :controller => 'books', :action => 'destroy_tag', :conditions => {:method => :delete}

2009年11月28日土曜日

Page 26: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

for more actions,more controllers

map.book_tags 'books/:id/tags', :controller => 'books', :action => 'tags', :conditions => {:method => :get}

map.book_tag 'books/:id/tag/:tag_id', :controller => 'books', :action => 'destroy_tag', :conditions => {:method => :delete}

map.author_tags 'authors/:id/tags', :controller => 'authors', :action => 'tags', :conditions => {:method => :get}map.author_tag 'authors/:id/tag/:tag_id', :controller => 'authors', :action => 'destroy_tag', :conditions => {:method => :delete}

map.author_tags 'reviews/:id/tags', :controller => 'reviews', :action => 'tags', :conditions => {:method => :get}map.author_tag 'reviews/:id/tag/:tag_id', :controller => 'reviews', :action => 'destroy_tag', :conditions => {:method => :delete}

map.edit_book_tags 'books/:id/tags/edit', :controller => 'books', :action => 'edit_tags', :conditions => {:method => :get}map.connect 'books/:id/tas', :controller => 'books', :action => 'update_tags', :conditions => {:method => :put}

map.edit_book_tags 'reviews/:id/tags/edit', :controller => 'reviews', :action => 'edit_tags', :conditions => {:method => :get}map.connect 'reviews/:id/tas', :controller => 'reviews', :action => 'update_tags', :conditions => {:method => :put}

map.edit_authors_tags 'books/:id/tags/edit', :controller => 'books', :action => 'edit_tags', :conditions => {:method => :get}map.connect 'authors/:id/tas', :controller => 'authors', :action => 'update_tags', :conditions => {:method => :put}

2009年11月28日土曜日

Page 27: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

2009年11月28日土曜日

Page 28: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

with sub_resources

plugin

2009年11月28日土曜日

Page 29: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

simple !

map.resources :books, :sub_resources => :tags

2009年11月28日土曜日

Page 30: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

nice mappings!URL route name method action

/books/:id/tags book_tagsGET tags

/books/:id/tags book_tagsPOST create_tag

/books/:id/tags/:tag_id book_tag

GET tag

/books/:id/tags/:tag_id book_tag PUT update_tag/books/:id/tags/:tag_id book_tag

DELETE destroy_tag

/books/:id/tags/new new_book_tag GET new_tag

/books/:id/tags/:tag_id/edit edit_book_tag DELETE edit_tag

2009年11月28日土曜日

Page 31: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

options availablemap.resources :books, :sub_resources => { :tags => { :only => [:index, :delete] } }

2009年11月28日土曜日

Page 32: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

single style

map.resources :books, :sub_resource => :image

2009年11月28日土曜日

Page 33: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

2. update/destroy

multiple recordsat once

2009年11月28日土曜日

Page 34: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

examples

2009年11月28日土曜日

Page 35: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

edit_allupdate_all

2009年11月28日土曜日

Page 36: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

another update_all

2009年11月28日土曜日

Page 37: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

destroy_all

2009年11月28日土曜日

Page 38: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

to delete all booksbooks

DELETE /books

BooksController#destroy_all

DELETE /books/destroy_alldestroy_all_books

2009年11月28日土曜日

Page 39: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

with sub_resourcesit’s easy!

URL method action

/books/edit GET edit_all

/books PUT update_all

/books DELETE destroy_all

2009年11月28日土曜日

Page 40: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

how to usemap.resources :books, :collection => { :edit_all => :get, :update_all => :put, :destroy_all => :delete }

2009年11月28日土曜日

Page 41: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

also available in sub resources

URL name method action

/books/:id/tags/edit edit_book_tags GET edit_tags

/books/:id/tagsbook_tags

PUT update_tags

/books/:id/tagsbook_tags

DELETE destroy_tags

2009年11月28日土曜日

Page 42: Sub Resources Rails Plug-in

株式会社万葉

RubyConf

DELETE /books/3/tags

map.resources :books, :sub_resources => { :tags => { :collection => {:destroy_all => :delete} } }

BooksController#destroy_tags

2009年11月28日土曜日