我已经在这里,这里和这里阅读了帖子,但是我仍然无法实现单表继承.
理想情况下,我希望有两个注册路径(一个用于客户端,一个用于提供者),具有公共字段名称,电子邮件,密码和confirm_password,以及提供者注册具有额外的radiobutton字段以指定提供者类型.我正在通过设计进行注册.在点击注册表单上的提交后,用户将被重定向到第二种形式,这对于客户端和提供者来说是完全不同的(我一直在使用资源的编辑页面).
按照目前的情况,如果我只是通过用户进行操作,一切正常,但只要我添加单表继承,注册表单就会告诉我他们缺少第二种表单的要求.
这是我的 config/routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => {:sessions => "sessions"}, :skip=> :registrations
devise_for :clients, :providers, :skip=> :sessions
resources :clients
resources :providers
root :to=>'pages#home'
match '/home', to: 'pages#home', via: 'get'
end
Run Code Online (Sandbox Code Playgroud)
我的模型如下:
用户:
class User < ActiveRecord::Base
before_save {self.email = email.downcase}
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :name, presence: true, length: {maximum: 50}
validates :email, presence: true, :email => {:ban_disposable_email => true, :message => I18n.t('validations.errors.models.user.invalid_email')}, uniqueness: { case_sensitive: false …Run Code Online (Sandbox Code Playgroud) ruby-on-rails single-table-inheritance devise ruby-on-rails-4
我已经安装了Devise并使用本教程中的选项1创建了用户和管理员https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-role
现在我需要一些帮助.添加管理员时,它会创建一个不同的表,并且可能会出现管理员和普通用户具有相同ID的情况.
那么我究竟如何从用户和管理员那里获取信息呢?比方说,我想显示所有用户?我是否必须遍历users表然后遍历admins表?
或者,如果我正在显示帖子.我如何知道要查找哪个表来获取用户或管理员信息?
我知道我可以在users表中添加一个角色列,但我想避免这种情况.
我希望这有道理哈哈