Ruby on Rails:在单个数据库单元中保存多个值

2024-03-17

如何在 Ruby on Rails 应用程序中的单个单元格记录中保存多个值?

如果我有一个名为Exp列名为:Education, Experience, and Skill,如果我希望用户在单行中存储多个值(例如:教育机构或技能),最佳实践是什么?

我想让用户使用多个文本字段,但应该进入相同的单元格记录。

例如,如果用户拥有多种技能,这些技能应该在一个单元格中吗?这是最好的还是如果我为技能创建一个新表会更好?

请指教,

Thanks


我不建议在同一数据库列中存储多个值。这会让查询变得非常困难。例如,如果您想要查找具有特定技能集的所有用户,则查询在可读性和性能方面都会很笨拙。

然而,在某些情况下它仍然是有意义的。

  • 当您想要允许数据点的可变列表时
  • 您不会根据列表中的值之一查询数据

ActiveRecord 对此有内置支持。您可以存储Hash or Array在数据库列中。

  1. 只需将列标记为Text

    rails g model Exp experience:text education:text skill:text
    
  2. 接下来,序列化您的列Model code

    class Exp < ActiveRecord::Base
      serialize :experience, :education, :skill
      # other model code
    end
    
  3. 现在,您只需保存Hash or Array在数据库领域!

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

Ruby on Rails:在单个数据库单元中保存多个值 的相关文章

  • 如何在 mongoid 中使用 or 条件进行查询

    如何在 Mongoid 中使用 or 条件进行查询 这是 OR 在 mongoid 中查询 如果你想要像下面这样的查询 select from user where id 10 or name hitesh 在带有 mongoid 的 Ra
  • 从 Ruby on Rails 应用程序运行 phantomjs

    我有兴趣使用幻影 http www phantomjs org 我想从我的 Ruby on Rails 应用程序运行它 然而 这是一个命令行工具 即我需要运行类似phantomjs rasterize js http raphaeljs c
  • ruby 中 Array#uniq 方法的时间复杂度是多少?

    谁能告诉我 ruby 内部使用哪种算法来使用 ruby 数组删除重复项Array uniq method 来自docs http www ruby doc org core 1 9 3 Array html static VALUE rb
  • Rails 的多个数据库不适用于远程数据库

    我有一个远程只读 postgres 数据库 它是通过 docker 实例维护的卡尔达诺数据库同步 https github com input output hk cardano db sync 我设法将开发数据库连接到它 它工作正常 但由
  • 将对象转换为哈希,然后将其保存到用户的列

    找不到任何接近我想做的事情 我想将一个对象存储到用户的列中 该列采用数组的形式 postgres def change add column users interest string array true default end 我有另一
  • 回形针/乘客 NotIdentifiedByImageMagickError:

    当我尝试上传照片时红宝石 on Rails http en wikipedia org wiki Ruby on Rails using 回形针 http github com thoughtbot paperclip在我的本地机器上它运行
  • 文件位置 Rails 7 中的 Javascript 与样式表

    在使用导入映射功能的新默认 Rails 7 应用程序中 Javascript 存储在app javascript 而 CSS 位于app assets stylesheets 它们不仅位于不同的层次结构级别 而且javascript是奇异的
  • Windows 等效的系统配置目录

    我正在 Ruby 中开发一个 CLI 应用程序 我希望允许通过标准配置文件级联在 Unix 中进行配置 etc appnamerc appnamerc 然而 该应用程序也应该在 Windows 环境中运行 我不确定将像这样的文件放在哪里 e
  • Rails:在任何源中都找不到并发 ruby​​-1.0.5 (Bundler::GemNotFound)

    我已经用谷歌搜索了很多 但没有发现任何对我的情况有用的东西 docker compose up abc 在日志中生成以下内容 usr lib ruby vendor ruby bundler spec set rb 92 in block
  • 错误:执行 gem 时... (Gem::FilePermissionError)

    我检查了所有其他类似的答案 没有一个与我的完全一样 这些解决方案也不适合我 gem environment and sudo gem environment给出相同的结果 RubyGems Environment RUBYGEMS VERS
  • 带 Rails 6/Webpack 的 Gmap

    我正在尝试让以前与早期版本的 Rails 一起使用的 Google 地图设置使用 Rails 6 显示 显然 Rails 6 现在使用 webpack 来处理 javascript 资源 并且我无法让我的应用程序识别用于识别的 Gmaps
  • 使用哈希时 fetch 与 [] ? [复制]

    这个问题在这里已经有答案了 来自鲁比 科恩斯about hashes rb 为什么你可能想使用 fetch代替 当访问哈希键时 默认情况下 使用 如果存在则检索哈希值 如果不存在则返回 nil Using fetch给你一些选择 请参阅文档
  • 如何将属性保存到 has_many :通过连接表,没有现有记录可供构建

    我有一个表单 可以使用以下命令创建新的子记录和新的父记录accepts nested attributes for 孩子和家长都有一个has many through像这样的关联 class Child lt ActiveRecord Ba
  • 触发器与非规范化存储过程的优缺点

    当涉及到对事务数据库中的数据进行非规范化以提高性能时 至少 有三种不同的方法 通过存储过程推送更新 更新规范化交易数据和非规范化报告 分析数据 在事务表上实现更新辅助表的触发器 这几乎总是维护历史时所采取的路线 将处理推迟到夜间批处理 可能
  • 为什么递归会出现“堆栈级别太深”?

    我有这个红宝石代码 def get sum n return 0 if n lt 1 n 3 0 n 5 0 n get sum n 1 get sum n 1 continue execution end puts get sum 999
  • 游标索引越界异常

    打开后出现光标索引越界错误 数据库 请任何人告诉我如何打开现有数据库 sqllite Android 我想在数据库上触发一个选择查询 检索一些信息 public void getPatient SQLiteDatabase db Strin
  • Rails error_messages 帮助器

    这是一段很常见的代码 First name br error messages是一个辅助方法 但我很难找到它的文档 为什么呢 我在这里找到它们 error messages 具有相同的参数错误消息 http apidock com rail
  • Ruby/Rails - 如何创建类并从控制器访问它

    我一直在尝试使用一些不同的 gem 在 Rails 3 中显示谷歌地图 但遇到了一些问题 幸运的是我发现了这个https github com YouthTree bhm google maps https github com Youth
  • 要做或不做:将图像存储在数据库中[重复]

    这个问题在这里已经有答案了 在 Web 应用程序的上下文中 我的前老板总是说在数据库中放置对图像的引用 而不是图像本身 我倾向于同意在数据库中存储 url 与图像本身是一个好主意 但在我现在工作的地方 我们在数据库中存储大量图像 我能想到的
  • 如何让 Twilio 在hangup() 被触发时停止拨号?

    我一直在使用 twilio ruby gem 开发 Twilio 应用程序 但我陷入了一个部分 为呼叫构建 TwiML 响应 我拨打一些号码 以便他们也可以接听呼叫 def handle gather response Twilio Twi

随机推荐

  • 疯狂的 JavaFX 帧速率 - 有什么想法吗?

    JavaFX 具有疯狂的帧速率 我今天演示了不同的 JavaFX 动画选项 然而 在我用于演示的机器上 AnimationTimer 的行为非常奇怪 据我了解 JavaFX 的目标应该是 60FPS 左右的速率 并且在每帧之前调用动画计时器
  • 如何在 ERB 中编写像 标签这样的纯 HTML?

    我想更换 gt 但我不明白为什么这比
  • 用于 C++ 的类似codingbat的网站[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 伙计们 我需要找到一个好的网站 比如编码蝙蝠 http codingbat com 再次学习 C 我在学校学过它 但后来我从未认真使用过它
  • 如何从 fullcalendar JS 视图中删除所有日期?

    我正在尝试构建一个在 fullcalendar 中创建事件的应用程序 我根本不允许用户在客户端创建 allDay 事件 但他们仍然可以在视图中看到它 有什么方法可以从视图中完全删除 allDays 吗 function initCalend
  • 在 TextField IText 中调整文本

    抱歉 如果存在像我这样的类似帖子 但我是这个论坛的新手 我还没有找到它 我在动态调整 TextField 大小取决于文本大小时遇到 问题 我填写现有的 PDF 填写 AcroForm 中的字段 form setField 字段 值 等 一切
  • 检查字符串是否为日期 Postgresql

    有没有什么功能PostgreSQL返回Boolean给定的字符串是否是日期 就像ISDATE 在 MSSQL 中 ISDATE January 1 2014 您可以创建一个函数 create or replace function is d
  • 在 OS X El Capitan 上使用 libssl 编译 C 程序?

    我有一个使用 libssl 的简单 C 程序 在 Linux 上 我安装了 openssl dev 包并使用以下行编译了程序 gcc test libssl c o test libssl lcrypto lssl 现在我想在我的 Mac
  • 如何将数组的元素作为单独的参数传递给函数?

    我有一个像这样的函数 但有更多参数 function do something n1 n2 n3 return n1 n2 n3 然后我有一个包含 3 个项目的数组 它们是该函数的参数 my array 10 123 14 例如 do so
  • SQL Server JDBC 异常

    当使用 ANT 构建我的 Java 应用程序时 我不断收到此错误 我已多次尝试使用 SQLJDBC JAR 和 SQLJDBC4 JAR 但不断收到此错误消息 我完全困惑为什么即使升级到 sqljdbc4 jar 后也会收到此错误 java
  • Nginx 未运行且没有错误消息

    我正在尝试启动我的 nginx 服务器 当我输入 gt etc init d nginx start 时 出现一条消息 正在启动 nginx 然后什么也没有发生 没有错误消息 当我检查 nginx 的状态时 我发现它没有运行 这是我的 et
  • 程序在 execvp( command.argv[0], command.argv) 之后停止

    我正在编写一个小型 shell 程序 它接受命令并执行它 如果用户输入无效命令 if 语句将返回 1 如果命令正确 则执行该命令 但是一旦执行该命令 程序就会结束 我做错了什么 不执行后面的代码行 我已经使用 ls 和 cat 命令测试了
  • 使用公式内现有单元格的值

    我正在使用 Excel 2010 中的 相机 功能 我的目标是有一个单元格 其中有一个我可以手动输入的日期 并且在其下方 公式将获得更新的值 该值代表另一个 Excel 文件中的工作表名称 并向我显示更新的屏幕截图 例如 细胞A1 has
  • 如何隐藏 VS Code 中的状态栏?

    如何隐藏 Visual Studio Code 中的状态栏 应该可以隐藏状态栏 有什么办法可以隐藏它吗 在 查看 菜单中 我找不到隐藏它的选项 View gt Appearance gt Show Status Bar Screenshot
  • subprocess.wait() 不等待 Popen 进程完成(使用线程时)?

    我在使用时遇到一些问题subprocess Popen 使用线程从我的 python 脚本生成同一应用程序的多个实例 使它们同时运行 在每个线程中 我使用以下命令运行应用程序popen 调用 然后我通过调用等待它完成wait 问题似乎在于w
  • 解析两个 XML 标签之间的值

    我知道以前有人问过这个问题 但我似乎找不到合适的解决方案 所以我会说明问题 我有一个类似于 XML 文件的字符串 它不是 XML 字符串 但有开始和结束标记 所有信息都位于一行中 例如
  • 电子邮件客户端无法验证带有 bouncycastle 签名的附件和图像的电子邮件

    我有一个邮件编辑器构建哑剧消息并使用邮件签名服务 签名是在sign and 构建签名生成器 方法 收到邮件后 邮件客户端检测到签名 但抱怨邮件可能已被篡改 邮件客户端能够显示证书 它显示所有证书 包括 CA 因此 要么基于 Bouncyca
  • 让 Rscript 从 stdin 读取或获取输入

    我了解了如何让 Rscript 在给定文件名作为参数时执行我想要的操作 例如如果我的 Rscript 被调用script并包含 usr bin Rscript path lt commandArgs 1 writeLines readLin
  • Doctrine Querybuilder ORDER BY 子句不在 SELECT 列表中

    我有以下查询生成器 queryBuilder this gt createQueryBuilder recipient gt leftJoin recipient message message gt orderBy message dat
  • $.post 仅适用于警报 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 当我调用带有警报的功能时 该功能运行良好 function post var cvs client nbr val var cs cs va
  • Ruby on Rails:在单个数据库单元中保存多个值

    如何在 Ruby on Rails 应用程序中的单个单元格记录中保存多个值 如果我有一个名为Exp列名为 Education Experience and Skill 如果我希望用户在单行中存储多个值 例如 教育机构或技能 最佳实践是什么