设计和多个“用户”模型

2023-11-24

我正在使用 Rails 3.2 和 devise 2.0,而且我对 Rails 还很陌生。

要求

我想实现以下目标:

  • 有 2 个或更多“用户”模型,例如。会员、客户、管理员
  • 所有型号共享一些必填字段(例如电子邮件和密码)
  • 每个模型可能有一些独特的字段(例如仅适用于客户的公司)
  • 某些字段可能是共享的,但没有相同的验证(例如,名称对于客户来说是必需的,但对于会员来说是可选的)
  • 注册过程中必须填写所有字段,因此表格有所不同
  • 登录表单应该是唯一的

可能的解决方案

我在 StackOverflow 上搜索了很长一段时间,但对我来说似乎没有什么是正确的(我是一个 Java 人,抱歉:),现在我很困惑。提出了两种解决方案:

单一设备用户

这是最常见的答案。只需创建默认设备用户并创建会员-->用户和客户-->用户之间的关系。 我关心的是如何为每个模型实现定制的注册流程?我尝试了不同的事情,但最终都一团糟!

多个设备用户

这解决了自定义注册过程,对我来说似乎是正确的,但独特的登录表单是一个障碍。我在 SO 上找到了答案(设计 - 从两个模型登录)建议重写 Devise::Models::Authenticatable.find_for_authentication(conditions)。 这看起来很复杂(?),因为我是 Rails 新手,我想知道这是否可行?

谢谢你的建议!


欢迎加入 Java 家伙 =),我希望您会喜欢 Rails 世界。 简而言之,要解决您的问题,您有两种解决方案:

  1. 为每个用户在数据库中创建一个表和相应的模型。
  2. 在数据库中创建一个表,并为每个用户类型创建一个模型。这称为单表继承 (STI)。

选择哪一个? 这取决于角色的共同属性。如果它们几乎很常见(例如都有姓名、电子邮件、手机等)并且一些属性不同,我强烈推荐 STI 解决方案。

性传播感染怎么办? 1.使用命令简单地创建devise用户模型和表rails generate devise User2. 添加一个名为type使用迁移将字符串数据类型迁移到数据库中的用户表。 3. 为每个用户类型创建一个模型(例如rails g model admin) 4.使Admin类继承自用户模型

class Admin < User
end

就这样,你就完成了 =) ... Yupeee

要创建管理员,请运行命令Admin.create(...)其中点是管理属性,例如电子邮件、姓名……

我认为这question也可以帮助你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计和多个“用户”模型 的相关文章

  • 如何在控制器中获取f.submit的名称参数?

    我创建了 form html erb 其中的编码如下 是的 我确实有两个相同表单的提交 并且它们都有 更新 和 销毁 等名称 当用户按下销毁按钮时 books controller 中的更新操作将被调用 并判断是 更新 还是 销
  • 更快地将数据库从一个heroku应用程序传输到另一个应用程序

    有没有更快的方法将我的生产数据库传输到测试应用程序 目前我正在做一个heroku db pull然后到我的本地机器heroku db push app testapp但这变得越来越耗时 我有一些种子数据 但它并不像简单地使用我的真实数据进行
  • 设计重定向到成功登录似乎在第一次登录尝试时卡住

    我正在使用 Ruby on Rails 开发一个小型应用程序 并使用 Devise 进行身份验证 我有两个登录系统设置 一个是user另一个是employee 当使用正确的电子邮件和密码登录时 设计会发送正确的重定向到返回路径 但它会卡在那
  • Rails 5 - 在 gem 上充当 Taggable - 简单表单集合选择已定义的标签列表

    我正在尝试学习如何将 Acts as Taggable On gem 与 Rails 5 一起使用 我使用简单的表格作为表格 我认为部分问题是由于提案和 randd fields 之间的模型没有关联而产生的 我有名为 Proposal 和
  • 多步ActiveRecord的模型验证

    考虑具有以下字段的用户模型 名字 必填 姓氏 必填 电子邮件 必填 要求输入密码 电话 必填 大小 10 位数字 地址 必填 以及包含以下步骤的多步骤注册表单 第一步 包含 名字 姓氏 和 电子邮件 字段 第二步输入密码 电话和地址 您将如
  • Rails 急切加载计数?

    使用 include 属性可以很好地进行预加载 Post find all include gt author 我想知道您是否也可以急切加载计数 例如我是否想获取每个帖子的评论数量 而不加载所有评论本身 也许像 Post find all
  • 未签出...捆绑安装无法修复帮助!

    https github com intridea omniauth git at master is not checked out Please run bundle install Bundler GitError 那我该怎么办 捆绑
  • 默认更新嵌套属性

    我尝试更新 iProduction 这是生产中的嵌套表单 但此行出现参数错误 参数数量错误 0 代表 1 生产 update iproducts attributes cow id cow 我的创作动作制作 def create produ
  • Rails 多租户架构,限制多个租户的访问范围

    目前我们有一个单租户数据库架构 MySQL 运行着超过 100 个数据库 我们使用 Apartment gem 切换子域上的数据库连接 一切都很顺利 然而 我们现在需要创建所谓的 伞 客户端 它可以访问一组现有客户端的所有数据 我不认为这对
  • Rails 4 - 带有 dependent-fields-rails 的条件 JS

    我正在尝试弄清楚如何在我的 Rails 4 应用程序中使用 dependent fields rails gem 我迷路了 我已将 underscore js 包含在我的供应商 javascripts 文件夹中 并更新了我的 applica
  • 将 Twitter 引导样式添加到 Rails 表单助手

    在阅读建议我使用带有引导程序集成的 Simple form gem 的答案后 我安装了它并根据 simple form 说明创建了我的表单 但输入框向右浮动 这是布局 正在使用部分 shared reg 调用该表单 div class co
  • A has_many Bs 其中 B 没有主键

    我有型号 A 和 B A has many B 并且 B 属于 A 到目前为止 一切都很好 除了我指定 B 没有主键 我不打算修改或删除单个 B 行 并且我预计会有数百万到数十亿的 B 行 因此省略主键将非常方便 节省空间 创建 B 表的迁
  • Rails validates_与模型的错误消息相关

    我在模型中使用 validates linked 来使用其他模型的验证代码 问题是验证失败的消息是 is invalid 我想将模型验证失败的实际描述错误冒泡到顶部 我发现这个问题 验证与模型的错误消息关联 https stackoverf
  • 如何使用 AngularJS、Devise 和 UI Router 全局实现身份验证?

    我对 Angular 很陌生 所以这可能是一个新手问题 我正在尝试实现一个简单的任务管理器 只是一个练习 以 Rails 作为后端 以 Angular 作为前端 到目前为止 我遵循了教程 一切正常 现在我想在全球范围内实施身份验证 这意味着
  • Rails - 可以在 javascript 函数中设置 Rails 变量吗?

    在 javascript 函数中设置 Rails 变量有什么问题吗 我无法在谷歌上搜索到明确的答案 只是想确保没有我不知道的陷阱或缺陷 我实际上对它是如何工作的感到困惑 如果 javascript 在客户端执行 我不会假设 Rails 会在
  • 为什么安装 Ruby 1.9.3 时会出现 404 错误?

    我最近擦除了我的计算机 操作系统 Mac OS X 10 6 8 并重新安装了所有开发工具 我再次安装了RVM 但是 它不允许我安装 Ruby 1 9 3 到目前为止我已经尝试过 rvm install 1 9 3 rvm install
  • i18n:特定型号的错误消息本地化

    我可以为每个验证本地化错误消息 但如何为特定模型创建错误 普通的语言环境如下所示 en mongoid errors messages taken It is already taken 但我想更改消息user model en mongo
  • 用设备销毁注册的路径是什么

    我正在尝试添加一个链接 以便用户可以销毁他 她自己的帐户 我正在使用内置的注册类 在我看来我有例如指向 localhost 3000 users 4 首先 这是正确的链接吗 其次 如何重定向到根路径 因为目前它看起来像尝试重定向到 id 4
  • 在 Rails 中,我可以通过委托方法订购查询吗?

    我在通过委托方法订购查询时遇到困难 我的任务是帮助将一个相当大的 Rails 3 应用程序升级到 Rails 4 我在索引操作中遇到了这个查询 我知道这些对象的命名是可怕且令人困惑的 measurements controller rb d
  • 在部分渲染时执行 JavaScript

    我有一些 JavaScript 代码 我想在用户单击其文件夹之一后执行 它会触发 show 操作和 show js erb 从而呈 现部分内容 Show js erb 当用户单击其文件夹之一时触发 如下所示 body append 它成功注

随机推荐

  • 如何将 Windows 身份验证和 JWT 与 .Net Core 2.1 结合起来

    我尝试将 Windows 身份验证和 JWT 与 NET Core 2 1 一起使用 我有以下身份验证启动设置 services AddAuthentication options gt options DefaultAuthenticat
  • Flash中的循环缓冲区

    我需要将不同长度的项目存储在闪存芯片的循环队列中 每个项目都有其封装 这样我就可以弄清楚它有多大以及下一个项目从哪里开始 当缓冲区中有足够的项目时 它将换行到开头 在闪存芯片中存储循环队列的好方法是什么 我可能想存储数以万计的物品 因此 从
  • 如何配置xampp发送电子邮件

    我知道这是网站上的其他地方 但由于某种原因 我在这里找到的答案仍然没有帮助 在尝试了一整天不同的事情后 我仍然无法让它工作 我的目标是将确认码发送到用户输入的电子邮件中 我只了解少量的 PHP 并遵循了登录 注册系统的教程 但我相当确定 p
  • 使表格单元格中的链接填充整个行高

    我有一个数据表 每个单元格都是一个链接 我想允许用户单击表格单元格中的任意位置并让他们点击链接 有时表格单元格不止一行 但并非总是如此 我使用 td a display block 来获取覆盖大部分单元格的链接 当一行中的一个单元格为两行而
  • 为什么子类已经重写了父类的静态方法?

    当静态方法在子类中被重写时 我对静态方法的行为感到困惑 下面是代码 public class SuperClass public static void staticMethod System out println SuperClass
  • 从 LightGBM 模型访问树和节点

    在sci kit learn中 可以访问整个树结构 即树的每个节点 这允许探索树的每个分割所使用的属性以及用于测试的值 The binary tree structure has 5 nodes and has the following
  • 如果 [super init] 返回 nil 该怎么办?

    以下面代码为例 id init self super init if self code return self 我不希望 nil 向上传播调用层次结构 我最初的想法是在 self 为零的情况下抛出异常 创建一个还原点并中止执行 更好的想法
  • 如何通过 Apps 脚本在 Google 表格中“清除格式”

    在我的 Google 表格中 我目前通过手动访问来删除格式Format gt Clear Formatting 如何以编程方式 通过 Apps 脚本 清除 Google 表格的行和 或列中可能存在的任何 所有格式 澄清 我知道文本类具有格式
  • F# 库中是否存在 tee 函数?

    或者在 FSharpx 中 let tee sideEffect fun x gt do sideEffect x x 用法可能是这样的 f gt gt tee printfn F returned A gt gt g gt gt h 或者
  • 为 SwiftUI Apple Watch 应用实现基于页面的导航

    我正在 SwiftUI 中构建一个 Apple Watch 应用程序 并希望实现基于页面的导航 以便当用户在主屏幕上向左滑动时 他们会被带到另一个视图 我了解如何使用 NavigationLink 让用户从一个屏幕移动到另一个屏幕 但不知道
  • 使用 AJP / Tomcat 6.0 设置最大 HTTP 标头大小

    如果您不使用 AJP Tomcat 6 0 Connectors 有一个不错的选择maxHttpHeaderSize属性在server xml 但如果您使用 AJP 则无法理解该属性 如果您正在编写使用 AJP 的应用程序 有什么方法可以增
  • 如何 JSON 序列化 Django 模型的 __dict__ ?

    我想在 Django 中序列化单个模型的值 因为我想用get values 不可用 然而 我读到在 Google 网上论坛上您可以使用以下方式访问值 dict from django http import HttpResponse Htt
  • 从cmd调用Windows 7中的通知气球消息?

    我需要在 Windows 7 中从命令提示符使用自定义文本创建通知气球消息 我搜索了Google并找到了shell32 Notifu 是一个免费的开源 Windows 程序 它使气球出现在系统托盘中 并包含您指定的自定义文本 您可以从命令行
  • 使用内联表单中的额外字段 - save_model、save_formset,无法理解差异

    假设我处于通常的情况下 多对多关系中有额外的字段 class Person models Model name models CharField max length 128 class Group models Model name mo
  • 暂停 Shiny 中的活动安排

    我有一个应用程序 有两个observeEvent 处理程序对输入A 和输入B 做出反应并执行一些操作 事件 A 的内容之一是更新输入 B shinyApp ui fluidPage selectInput A Input A c 1 5 s
  • schema.org 的使用如何符合关联数据原则?

    我开始学习 schema org 模式 我来自 RDF OWL 社区 令我惊讶的是 我确实找不到 schema org 的 RDFS 或 OWL 词汇表示 更具体地说 我意识到这只是一个描述架构的 HTML 页面 我还找到了该架构的 RDF
  • 将第一行添加到空 data.frame 时,行号不同(NA 与 1)

    我想了解为什么这两种索引空的方法data frame导致NA分配给第一行的行号only 方法一 df lt data frame Number numeric Text character stringsAsFactors FALSE df
  • OpenXml 表错误“每个 之前都需要

    元素”

    我创建了一个 Word 模板 然后通过 OpenXML SDK 对其进行处理 以将文档的某些内容替换为数据库查询中的数据 该模板由一些基本文本组成 并在我想要替换文本的位置注入了纯文本内容控件 然后 我使用这些控件中的文本作为查找替换值的键
  • 在 C# 中获取最后 'N' 个季度

    假设当前季度是 3 年份是 2011 年 我怎样才能获得最后 5 个季度 期望的输出 Q3 2011 Q2 2011 Q1 2011 Q4 2010 Q3 2010 附加 Q 和 我正在尝试如下 int generateQuater 5 i
  • 设计和多个“用户”模型

    我正在使用 Rails 3 2 和 devise 2 0 而且我对 Rails 还很陌生 要求 我想实现以下目标 有 2 个或更多 用户 模型 例如 会员 客户 管理员 所有型号共享一些必填字段 例如电子邮件和密码 每个模型可能有一些独特的