我需要设计和使用多个模型的选项的帮助。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路由 –