devise_for
Deviseã使ãã¨ãã routes.rbã«æ¸ã devise_for
ãä½ããã£ã¦ãããã
devse_for?
devise/rails/routes.rb ã® devise_for
ã®ã³ã¡ã³ãæ¬ã®ã¨ãã
# Includes devise_for method for routes. This method is responsible to # generate all needed routes for devise, based on what modules you have # defined in your model.
ã¢ãã«ä¸ã§Deviseã®ã¢ã¸ã¥ã¼ã«è¨å®ããã¼ã¹ã¨ãã¦ãroutesã®è¨å®ãããã
ã¾ãã
devise/mapping.rb ã®å é ã®ã³ã¡ã³ãã
# Responsible for handling devise mappings and routes configuration. Each # resource configured by devise_for in routes is actually creating a mapping # object. You can refer to devise_for in routes for usage options.
devise_for ã®å®ç¾©ã¯ãå®è³ªã¯Devise::Mapping ã®ã¤ã³ã¹ã¿ã³ã¹ãä½æãã¦ããã
mappingãªãã¸ã§ã¯ãä½ã£ãå¾ã«ã devise_scope ãå¼ã³åºãã¦ã devise_#{module name}
ãå¼ã³åºããã¨ã§ãroutesãå®ç¾©ãã¦ããã
# devise_for ã¡ã½ããã®æä¸é¨ã§ãdevise_scope ãå¼ã³åºãã¦ããç®æã devise_scope mapping.name do with_devise_exclusive_scope mapping.fullpath, mapping.name, options do routes.each { |mod| send("devise_#{mod}", mapping, mapping.controllers) } end end
ä¾ãã°ãpasswordã¢ã¸ã¥ã¼ã«ã®routesã¯ä¸è¨ã®ããã«å®ç¾©ããã¦ã
def devise_password(mapping, controllers) #:nodoc: resource :password, only: [:new, :create, :edit, :update], path: mapping.path_names[:password], controller: controllers[:passwords] end
mappingãªãã¸ã§ã¯ãã®è¨å®ãå ã« resource ã®è¨å®ããã¦ãã
devise_scope?
devise_scope :resource_name &block
ã§ããããã¯ã«routesãå®ç¾©ããå¦çãæå®ã§ããã
devise_for ã§ã¢ã¸ã¥ã¼ã«æ¯ã®åºæ¬çãªè¨å®ã¨å種ãªãã·ã§ã³ã§ã®èª¿æ´ã¯ã§ããã
devise_scope ã¯ãã£ã¨èªç±ã«routesãã«ã¹ã¿ãã¤ãºããã¨ãã«ä½¿ãã¨ã®ãã¨ã
constraints ï¼é ä¸ã®ãã¹ããããã«ã¼ãã«å¶ç´ããããå¦çï¼ã§ request.env["devise.mapping"] ã« Devise.mappings[scope]ãè¨å®ãã¦ã
scope :resource_name ã«ãä¸è¨ã§å®ç¾©ããrouteæ å ±ã渡ãã¦ãã
constraints ã®å¦çã¯ãinitializeã®ã¨ãã§ã¯ãªããå®éã«å¯¾è±¡ã®routeã«ã¢ã¯ã»ã¹ããã£ãã¨ãã«èµ°ãã®ã§ã
deviseã®routesã®ãªã¯ã¨ã¹ãæ¯ã« request.env["devise.mapping"] ã«Mappingæ å ±ãè¨å®ãã¦ããï¼ç®çã¯è¬ãï¼
=以ä¸2020/11/20ã«è¿½è¨=
mappingæ å ±ã¯deviseãè¤æ°ã®resourceï¼UserãAdminã®ãããªï¼ã«å¯¾å¿ããããã«å¿ è¦ãªãã®ã ã£ãã mappingã«ã¯userã®ãããªresourceåã®æ å ±ã¨ãregisterableã®ãããªè¨å®ããã¦ããã¢ã¸ã¥ã¼ã«ã®æ å ±ãæ ¼ç´ããã¦ããã
DeviseControllerèªä½ã¯resourceãã¨ã«çæãããªãã®ã§ãï¼ã¤ãããªãã ãªã®ã§ãmappingæ å ±ããªãã¨ãä»ã¢ã¯ã»ã¹ããã¦ãã対象ã®resourceããä¾ãã°userãªã®ããadminãªã®ã解ããªãã
devise.mappingã¯DeviseControllerã«å¯¾ãã¦ã対象ã®resourceãmoduleã®è¨å®ãç¥ãããããã®ã¡ã¿çãªæ å ±ã ã£ãã
ã¾ã¨ã
Railsã®routeså¨ãã®ä»çµã¿ãããã¯ãã¦ãdeviseã®åã¢ã¸ã¥ã¼ã«ã§å¿ è¦ãªroutesã®è¨å®ããç°¡åã§ãæè»ãªå½¢ã§è¡ããããã«ãã¦ããã¤ã¡ã¼ã¸ã