gpt4 book ai didi

ruby-on-rails - Rails + 设计 : When to nest resource in devise_for & nested resources

转载 作者:行者123 更新时间:2023-12-04 01:35:07 25 4
gpt4 key购买 nike

  • 我什么时候应该在 devise_for 中嵌套路由堵塞?请举一两个例子来说明用例。 (路线#1)
  • :foo_object:users 相关联所以:user has_one :foo_object ,我需要嵌套:foo_object:users ? (路线#2):users是设计:users模型。

  • 路线#1:
    devise_for :users  
    resource :foo_object

    路线#2:
    devise_for :users
    resources :users do
    resource :foo_object
    end

    最佳答案

    下面的例子:

    devise_for :users, :path => 'accounts'

    resources :users do
    resources :orders
    end

    以上表示认证路径为 "/accounts/sign_in" , "/accounts_sign_up"等等。有些人可能不知道承认 devise_for :users 很重要。没有 实际上映射到 UsersController和模型。它甚至不是一条资源路线,尽管许多人认为它看起来像它。这就是为什么我们不能像下面这样对待它:
    devise_for :users do 
    resources: somereosouce
    end

    全部 devise_for是映射以下路线:
    # Session routes for Authenticatable (default)
    new_user_session GET /users/sign_in {:controller=>"devise/sessions", :action=>"new"}
    user_session POST /users/sign_in {:controller=>"devise/sessions", :action=>"create"}
    destroy_user_session GET /users/sign_out {:controller=>"devise/sessions", :action=>"destroy"}

    # Password routes for Recoverable, if User model has :recoverable configured
    new_user_password GET /users/password/new(.:format) {:controller=>"devise/passwords", :action=>"new"}
    edit_user_password GET /users/password/edit(.:format) {:controller=>"devise/passwords", :action=>"edit"}
    user_password PUT /users/password(.:format) {:controller=>"devise/passwords", :action=>"update"}
    POST /users/password(.:format) {:controller=>"devise/passwords", :action=>"create"}

    # Confirmation routes for Confirmable, if User model has :confirmable configured
    new_user_confirmation GET /users/confirmation/new(.:format) {:controller=>"devise/confirmations", :action=>"new"}
    user_confirmation GET /users/confirmation(.:format) {:controller=>"devise/confirmations", :action=>"show"}
    POST /users/confirmation(.:format) {:controller=>"devise/confirmations", :action=>"create"}

    因此,可以说您可以执行以下操作,但会产生一些冲突:
    devise_for :users 

    resource :users do
    resource :foo_object
    end

    关于嵌套资源的一些内容,如果您有以下内容:
    class Users < ActiveRecord::Base
    has_many :foo_object
    end

    class FooObject < ActiveRecord::Base
    belongs_to :users
    end

    那么你的嵌套资源将是
       resource :users do 
    resource :foo_object
    end

    希望这可以解决问题。您也可能想阅读 Nested Resource with Devise - Rails3

    关于ruby-on-rails - Rails + 设计 : When to nest resource in devise_for & nested resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17349666/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com