我有我的API v1和v2指向相同的设计模式与下面的路线两个Route:问题与设计RESOURCE_NAME当两个路径指向同一个模型
scope :api do
namespace :v1 do
devise_for :users, :controllers => {:registrations => "devise/v1/users_registrations",
:sessions => "devise/v1/users_sessions",
:passwords => "devise/v1/users_passwords"}
end
end
scope :api do
namespace :v2 do
devise_for :users, :controllers => {:registrations => "devise/v2/users_registrations",
:sessions => "devise/v2/users_sessions",
:passwords => "devise/v2/users_passwords"}
end
end
我的问题,当一个请求被发送到这些API中的任何一个Devise resource_name是'v1_user'或'v2_user',但发送的参数具有params ['user']所需的值。
我从Devise helpers.rb devise_parameter_sanitizer方法中获取此信息。当设计:: ParameterSanitizer.new(resource_class的,RESOURCE_NAME,则params)PARAMS看起来象下面这样:
result = {ActionController::Parameters} ActionController::Parameters (4 elements)
'user' = {ActionController::Parameters} ActionController::Parameters (16 elements)
'email' = "[email protected]"
'password' = "qwertyuiop"
'first_name' = "test"
'last_name' = "testtest"
'ship_street_address' = "1 main st"
'ship_city' = "rome"
'ship_state' = "TX"
'ship_zip_code' = "12345"
'dealer_number' = "1234567890"
'business_name' = "ABC Pumps"
'bus_street_address' = "121 West Ave"
'bus_city' = "San Antonio"
'bus_state' = "NY"
'bus_zip_code' = "73412"
'distributor_id' = "1"
'additional_distributor_id' = "1"
'controller' = "devise/v1/users_registrations"
'action' = "create"
'format' = "json"
不知道这将是有用的信息,但这里是devise_mapper:
result = {Devise::Mapping} #<Devise::Mapping:0x007fc7a2c8d950>
@class_name = "User"
@controllers = Hash (3 elements)
@failure_app = {Class} Devise::FailureApp
@format = nil
@klass = {Devise::Getter} #<Devise::Getter:0x007fc7a2c8d338>
@modules = Array (7 elements)
@path = "users"
@path_names = Hash (8 elements)
registration =>
new => new
edit => edit
sign_in => sign_in
sign_out => sign_out
password => password
sign_up => sign_up
cancel => cancel
@path_prefix = "/api/v1"
@router_name = nil
@routes = Array (3 elements)
[0] = {Symbol} session
[1] = {Symbol} password
[2] = {Symbol} registration
@scoped_path = "v1/users"
@sign_out_via = {Symbol} delete
@singular = {Symbol} v1_user
@strategies = Array (2 elements)
[0] = {Symbol} rememberable
[1] = {Symbol} database_authenticatable
@used_helpers = Array (3 elements)
[0] = {Symbol} session
[1] = {Symbol} password
[2] = {Symbol} registration
@used_routes = Array (3 elements)
[0] = {Symbol} session
[1] = {Symbol} password
[2] = {Symbol} registration
想知道downvote的原因。也许我可以更好地问这个问题? – KevinM