我需要設計和使用多個模型的選項的幫助。Rails設計 - 多個模型
目前,我得到了一個用戶模型和客戶模型,該模型是一個命名空間內:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :recoverable, :registerable, :rememberable, :trackable, :validatable
end
class Test::Client < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
正如你可以看到,我包括設計在兩個模型。就像它在doc ..
所以看看我路線:
devise_for :users, controllers: {passwords: 'passwords',
sessions: 'sessions'}
devise_for :clients, class_name: 'Test::Client', controllers: {sessions: 'test/sessions'}
我現在的問題是,當我創建一個登錄表單我客戶型號:
<%= form_for(resource, as: resource_name, url: client_session_path(resource_name), html: {class: ''}) do |f| %>
<% end %>
它具有以下網址:/clients/sign_in.client
這是什麼。客戶端?它讓我瘋狂。當你需要更多的信息,讓我知道..
編輯1:
我現在編輯我的模型結構。
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :recoverable, :registerable, :rememberable, :trackable, :validatable
end
class Test::Client < User
# some Client only functions
end
因此,作爲普通用戶的登錄工作。但客戶登錄仍然沒有。在我看來,我這樣做:
<%= form_for(Test::Client.new, as: :client, url: session_path(:client)
當我輸入我的憑據我重定向到「/用戶/ sign_in」,但沒有別的happend。在我的日誌我有一個過濾器條目:
Filter chain halted as :require_no_authentication rendered or redirected
爲什麼不STI? 'class Test :: Client
@huanson我已經試過了。但後來我得到的問題,對象總是輸入*用戶*,但我需要*客戶端*方法等 – Zero
你好,你仍然有用戶和測試::客戶端和客戶端,你可以擴展一切。但仍然只是一個登錄和1路由 –