Rails3ã®ã«ã¼ãã£ã³ã°ã«ã¤ãã¦èªåãªãã«ã¾ã¨ãã¦ã¿ã #rails
æè¿Rails3ã§éãã§ã¦ãããããã«ã¼ãã£ã³ã°ãåãã£ã¦ããã®ã§ã¾ã¨ãã¾ããåã®ç¥ã£ã¦ãç¯å²ããã¾ã¨ããªãã®ã§ããã¹ã¦ã®æ©è½ãç¶²ç¾ ããããã§ã¯ããã¾ããããããã ãç¥ã£ã¦ãã°ä¸èªç±ããªãæ°ãããã®ã§ããã§è¯ãã§ããã¦ããããªãã±ã¼ã
åºæ¬çãªãã¨
Railsã®ææ³
Railsã®ã«ã¼ãã£ã³ã°ãçè§£ããã®ã«ãæ¼ããã¦ããã¹ãææ³ã¯ä¸ã¤ããªã¨æãã¾ãã
ããã¹ã¦ã®æä½ã¯ãªã½ã¼ã¹ã«å¯¾ããCRUDæä½ã§ããã
ããã念é ã«ããã¦ããã¨ãã«ã¼ãã£ã³ã°ã®çè§£ããããããªãã¨æãã¾ãã
ç·¨éãããã¡ã¤ã«
ã«ã¼ãã£ã³ã°ã¯ä»¥ä¸ã®ãã¡ã¤ã«ã«è¨è¿°ãã¾ããåºæ¬çã«ããã ããè¦ãã°å ¨é¨ã®ã«ã¼ãã£ã³ã°ããããããã«ãªã£ã¦ãã¾ãã
config/routes.rb
ã«ã¼ãã£ã³ã°ã®ç¢ºèªæ¹æ³
Railsã¢ããªã±ã¼ã·ã§ã³ã®ã«ã¼ããã£ã¬ã¯ããªã§ä»¥ä¸ã®ã³ãã³ããæã¦ã°ãã¤ã§ãã«ã¼ãã£ã³ã°ã確èªãããã¨ãã§ãã¾ããã«ã¼ãã£ã³ã°ãããã£ãããã¾ãã«ç¢ºèªããã¨è¯ãã§ãããã
$ rake routes
resources
弿°ã«ä¸ããååã®ãªã½ã¼ã¹ã«å¯¾ããCRUDæä½ãè¡ãçºã®ã«ã¼ããå®ç¾©ãã¾ãã
resources :posts
ããã rake routes ã§ç¢ºèªããã¨ä»¥ä¸ã®ããã«ãªãã¾ãã
$ rake routes posts GET /posts(.:format) posts#index POST /posts(.:format) posts#create new_post GET /posts/new(.:format) posts#new edit_post GET /posts/:id/edit(.:format) posts#edit post GET /posts/:id(.:format) posts#show PUT /posts/:id(.:format) posts#update DELETE /posts/:id(.:format) posts#destroy
åã¢ã¯ã·ã§ã³ã®å½¹å²
åã¢ã¯ã·ã§ã³ã®å½¹å²ã¯ä»¥ä¸ã®ã¨ããã§ãã
ã¢ã¯ã·ã§ã³ | å½¹å² | viewãæã¤ã | CRUD | ãããªé·ç§»å |
---|---|---|---|---|
posts#index | postã®ä¸è¦§ã表示ãã | o | R | show,new,destroy |
posts#create | postãæ°è¦ä½æãã | x | C | show |
posts#new | postãæ°è¦ä½æããããã®æ å ±ãå ¥åãã | o | R(C) | create |
posts#edit | postãæ´æ°ããããã®æ å ±ãå ¥åãã | o | R(U) | update |
posts#show | postã®è©³ç´°ãªæ å ±ã表示ãã | o | R | edit |
posts#update | postãæ´æ°ãã | x | U | show |
posts#destroy | postãåé¤ãã | x | D | index |
ã¢ã¯ã·ã§ã³ãéå®ãããã¨ãã§ãã
æ°è¦ä½æã¯ã§ãããã©æ´æ°ã¯ã§ããªãã¨ããåé¤ãããªãã¨ããå¶å¾¡ãããã¨ãã§ãã¾ãã
:onlyã使ããã¨ã§ãæå®ããã¢ã¯ã·ã§ã³ã ãã®ã«ã¼ããå®ç¾©ãããã¨ãã§ãã¾ãã
resources :posts, :only => [:new, :create]
$ rake routes posts POST /posts(.:format) posts#create new_post GET /posts/new(.:format) posts#new
:exceptã使ããã¨ã§ãæå®ããã¢ã¯ã·ã§ã³ä»¥å¤ã®ã«ã¼ããå®ç¾©ãããã¨ãã§ãã¾ãã
resources :posts, :except => [:edit, :update, :destroy]
$ rake routes posts GET /posts(.:format) posts#index POST /posts(.:format) posts#create new_post GET /posts/new(.:format) posts#new post GET /posts/:id(.:format) posts#show
æå³ã«åããã¦é©å®ä½¿ãåããã¨è¯ãã§ãããã
resourcesã®ãã¹ã
resourcesããã¹ãããããã¨ãã§ãã¾ãã
resources :posts do resources :comments end
$ rake routes post_comments GET /posts/:post_id/comments(.:format) comments#index POST /posts/:post_id/comments(.:format) comments#create new_post_comment GET /posts/:post_id/comments/new(.:format) comments#new edit_post_comment GET /posts/:post_id/comments/:id/edit(.:format) comments#edit post_comment GET /posts/:post_id/comments/:id(.:format) comments#show PUT /posts/:post_id/comments/:id(.:format) comments#update DELETE /posts/:post_id/comments/:id(.:format) comments#destroy posts GET /posts(.:format) posts#index POST /posts(.:format) posts#create new_post GET /posts/new(.:format) posts#new edit_post GET /posts/:id/edit(.:format) posts#edit post GET /posts/:id(.:format) posts#show PUT /posts/:id(.:format) posts#update DELETE /posts/:id(.:format) posts#destroy
commentsã«å¯¾ããã«ã¼ãã£ã³ã°ãå®ç¾©ããã¾ããããã¹ã®å é ã« /posts/:post_id ãã¤ãã¾ãã
namespace
管çç»é¢ãä½ãããã¨ããªããã«ä¾¿å©ãªã®ãnamespaceã§ããä¾ãè¦ã¾ãããã
namespace :admin do resources :users end
$ rake routes admin_users GET /admin/users(.:format) admin/users#index POST /admin/users(.:format) admin/users#create new_admin_user GET /admin/users/new(.:format) admin/users#new edit_admin_user GET /admin/users/:id/edit(.:format) admin/users#edit admin_user GET /admin/users/:id(.:format) admin/users#show PUT /admin/users/:id(.:format) admin/users#update DELETE /admin/users/:id(.:format) admin/users#destroy
ãã¹ã®å é ã« /admin ãã¤ãããã«ãªãã¾ããæ³¨æäºé ã2ç¹ããã¾ãã
- model, view, controller ã®åãã¡ã¤ã«ã(åºæ¬çã«)adminãã£ã¬ã¯ããªä»¥ä¸ã«é ç½®ããå¿ è¦ããã
- model, controller ã®ã¯ã©ã¹ã(åºæ¬çã«)Adminã¢ã¸ã¥ã¼ã«ã®å é¨ã«å®£è¨ããå¿ è¦ããã
MVC | ãã¡ã¤ã« | ã¯ã©ã¹ |
---|---|---|
model | app/models/admin/user.rb | Admin::User |
view | app/views/admin/ã | ãªã |
controller | app/controllers/admin/users_controller.rb | Admin::UsersController |
root
ã«ã¼ãï¼/ï¼ã¸ã®ã«ã¼ãã£ã³ã°ãå®ç¾©ãã¾ãã
root :to => 'posts#index'
$ rake routes root / posts#index
namespaceã®ä¸ã«å®ç¾©ãããã¨ãã§ãã¾ãã
root :to => 'posts#index' namespace :admin do root :to => 'users#index' end
$ rake routes root / posts#index admin_root /admin(.:format) admin/user#index
match
matchã使ãã¨ãæ¯è¼çèªç±ã«ã«ã¼ãã£ã³ã°ãå®ç¾©ãããã¨ãã§ãã¾ããä¾ãã°omniauthçã®ãã©ã°ã¤ã³ã使ã£ã¦å¤é¨ãµã¼ãã¹çµç±ã§ã®ãã°ã¤ã³ãããå ´åã以ä¸ã®ããã«è¨å®ãããã¨ã«ãªãã¨æãã¾ãã
match '/auth/:provider/callback' => 'sessions#create'
$ rake routes /auth/:provider/callback(.:format) sessions#create
ã¾ã¨ã
Rails3ã®ã«ã¼ãã£ã³ã°ã«ã¤ãã¦åãç¥ã£ã¦ããã¨ã¯ä»¥ä¸ã§ããééã£ã¦ãããã¦ããææãã¦ããããã¨å¬ããã§ãããã£ã¨é«åº¦ãªè¨å®ãæãã¦ããã人ã大æè¿ã§ãã
ããã¹ã¦ã®æä½ã¯ãªã½ã¼ã¹ã«å¯¾ããCRUDæä½ã§ããã
ã¨ã«ããããã®ãã¨ã ãå¿ããªããã°è²ã ãã£ããããã¨æã£ã¦ãã¾ãã