Rails中如何管理非自增主键?

2023-12-24

在使用 Rails 时,我有很多情况希望有一个非自动增量主键。

示例:我在 A 和 B 之间有一对一的关系。B 描述了添加到 A 的一些特定功能,因此没有 A 就无法存在。所以我们有:

A有一个B
B 属于 A

自然的想法是将 B.A_id 作为主键。所以我尝试了create_table b, :id=>false在迁移和set_primary_key :a_id在 B 的模型中,但它不会在数据库中创建实际的主键。我想要它们(以及外键),因为数据库不仅由这个 Rails 应用程序使用。

如果我使用执行创建主键,它们不会进入 schema.rb,这很痛苦。现在我正在考虑一个解决方法:只要该列有唯一约束,我就可以没有 PK 约束,所以我可以在迁移中使用 Rails 的 add_index ,这看起来更优雅。

有什么建议么?


StackOverflow 上的一个非常相似的问题表明 https://stackoverflow.com/questions/1585323/how-to-turn-off-autoincrement-in-rails-active-record尝试类似的东西:

create_table(:b, :id => false) do |t|
  t.integer :a_id, :options => 'PRIMARY KEY'
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails中如何管理非自增主键? 的相关文章

  • Rails:同一 URL 显示不同的视图?

    首先 举一个我正在尝试做的事情的例子 如果你去http www meetup com http www meetup com并且您尚未登录 您会看到一个页面 显示 做某事 学习某事 等 这是一个公共页面 但是当您登录时 同一页面 URL 会
  • 使用 SQL 函数在 ActiveRecord 中进行插入/更新

    我想在我的 Rails 应用程序中存储 IP 地址 v4 和 v6 我已经安装了MySQL 的扩展 http labs watchmouse com 2009 10 extending mysql 5 with ipv6 functions
  • Rails - 查找多个数组之间的交集

    我正在尝试查找多个数组之间的交集值 例如 code1 1 2 3 code2 2 3 4 code3 0 2 6 所以结果是 2 我知道在 PHP 中你可以使用 array intersect 来做到这一点 我希望能够轻松添加额外的数组 所
  • 如何修复 PagesController#home 缺少请求格式模板:text/html

    对于我的 Rails 6 应用程序routes rb I have Rails application routes draw do root pages home end 并在我的pages controller rb I have cl
  • asset_host 和相关协议 URL 更改为 http

    我的应用程序 Rails 4 0 0 的某些元素可通过 http 和 https 连接使用 因此我已将 asset host 配置为使用相对协议 url 这应该允许浏览器进行切换它希望从中获取资产的协议 config action cont
  • 如何使用 SQL 语法更改主键约束?

    我有一个表 其主键约束中缺少一列 我不想通过 SQL Server 对其进行编辑 而是想将其放入脚本中以将其添加为更新脚本的一部分 我可以使用什么语法来执行此操作 我必须删除并重新创建关键约束吗 是的 唯一的方法是使用 Alter 表删除约
  • 如何在 Ruby on Rails 的 Ubuntu 服务器上以生产模式重新启动 Phusion Passenger + Apache?

    我有 Apache phusion 乘客 我已经把 RailsEnv production 在 etc apache2 sites available default 文件中并已重新启动 apache 但当我运行时 rails c gt R
  • 使用 authlogic-oauth2 服务器无法启动

    我已将 oauth2 和 authlogic oauth2 包含在 gemfile 中 因为我想使用它们并尝试启动服务器 它没有启动并给我错误 Library Ruby Gems 1 8 gems railties 3 0 3 lib ra
  • 使用 nginx 运行水豚

    是否可以使用 nginx 和乘客来运行水豚 而是 webrick Capybara 与 Cucumber 一起安装在 Rails 应用程序中 这很简单 你唯一要做的就是改变你的想法 水豚和黄瓜都不受本地环境的束缚 你可以测试位于互联网上的应
  • Rails 6 中的protect_from_forgery?

    The protect from forgery方法不包含在默认 Rails 6 应用程序的应用程序控制器中 但有嵌入式 ruby在主应用程序布局中 这是否意味着protect from forgery方法已被抽象并且在应用程序控制器中不再
  • 如何使用 Unicorn 进行滚动重启?

    假设我对 Rails 应用程序做了一些更改 例如更改 html 布局 我如何使用 Unicorn 进行滚动重启 实际上 人们希望为最新版本的 Rails 应用程序启动独角兽进程 或工作人员 然后自动将流量从旧的独角兽进程 工作人员切换到新的
  • Rails 3 ActiveRecord 方法链接,底层

    假设您构建一个涉及多个方法链接的查询 例如 Post where id gt 10 limit 20 order id asc except order 我想知道幕后发生了什么 据推测 链的每个部分都将帮助构建 SQL SELECT 一旦链
  • 通过 Devise 将 Discourse SSO 与现有 Rails 站点相结合

    我有一个现有的 Rails 应用程序 它使用 devise 作为用户身份验证 我添加了一个话语论坛 http www discourse org一切都很顺利 它驻留在子域上 我已阅读该帖子https meta discourse org t
  • Rails:Belongs_to 多态关联 + 条件

    所以我有这个模型 class Model lt ActiveRecord Base attr accessible to id to type belongs to to polymorphic true end 我想知道当 own to
  • 是否值得开始学习 Rails 2 还是应该等到 Rails 3 的书籍可用?

    我一直梦想着学习 Rails 和 Ruby 语言 但新的 Rails 3 版本似乎发生了巨大的变化 那么2和3之间通常存在巨大差异吗 当有书籍可用时 我是否应该从 Rails 3 开始 因为这是我学习最好的方式 事实上 最好的目标是 Rai
  • Rails 5+ 中 OO/Table 继承(即 STI、MTI、CLI)的可能解决方案是什么?

    这些是我看到的可以帮助解决 Rails 5 对象关系阻抗以及如何构造多个继承的类 表 https stackoverflow com questions 39524488 rails 5 object relation impedance
  • 安装atomic (1.1.16) 时出错,Bundler 无法继续

    我正在尝试创建一个新的 Rails 应用程序 但在捆绑时会出现此错误 这是我第一次遇到这个错误 Gem files will remain installed in usr local rvm gems ruby 1 9 3 p448 ge
  • 访问 ActiveSupport::LogSubscriber 子类中的 Rails 请求

    我正在尝试制作一些自定义 Rails 记录器 它最终将记录到数据库 但是 我无法访问请求对象之类的东西 而我非常希望拥有这些 我目前正在尝试使用 LogSubscriber 通知 接口来完成大部分工作 也许这不是正确的做法 我确实知道我可以
  • Ruby:在 Windows 7 下安装 EventMachine 时出现问题

    我尝试通过捆绑包在 Windows 7 上安装 gem EventMachine 使用 Ruby 1 9 2 和 RubyInstaller 但出现以下错误 我还安装了 DevKit 并且它可以工作 但我仍然无法弄清楚问题出在哪里 Inst
  • 主键与主键

    创建包含数据库结构的 mysql 转储时 其中一张表显示以下内容 CREATE TABLE completedTransactions paymentId int 10 unsigned NOT NULL timestamp int 15

随机推荐

  • Eclipse 中的 UI 设计器无法预览自定义视图

    背景 我一直在创建许多类型的自定义视图 通常我会在 ADT 的 UI 设计器上很好地显示它们的预览 最近 更新到最新版本的 ADT 22 0 5 v201307292155 757759 后 我看不到任何类型的自定义视图 甚至是最简单的视图
  • 使用 Google Apps 脚本从 Google 云端硬盘托管 Google 网站中的图像的替代方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 之前很简单 只需要使用URL即可https googledrive com host https go
  • Cocos2d iPhone非矩形精灵触摸检测

    有一个在精灵中包含三角形图形的项目 我将这些精灵排列在网格中 以便它们的矩形全部重叠 当精灵被触摸时 它们的 z 顺序 由我 被更改 以将它们放在 zOrder 的顶部 我使用的是 Cocos 0 8 1 和触摸调度程序方法 我可以进行触摸
  • 在 Android Studio 或 IntelliJ 中将未使用的导入报告为错误

    Android Studio 中是否有任何方法 设置可以将 java 文件中未使用的导入报告为错误 在 Eclipse 中 lint 很容易将此报告为错误 适用于 Android Studio 和 IntelliJ 你可以去File Set
  • iOS 崩溃分析和报告 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 了解 javascript 全局命名空间和闭包

    我正在尝试提高对 javascript 中的全局命名空间的理解 我对以下几件事感到好奇 是否存在一个 GOD 即父 对象 所有对象 因为除了基元之外的所有事物都是对象 都要回答 如果是这样 该对象将是 窗口 吗 为什么在全局范围内使用变量
  • 选择取消按钮时如何重置 DatePicker

    我的应用程序中有一个 datePicker 对话框 当我选择日期时效果很好 但是 如果在对话框中更改日期然后按取消 原始编辑文本将保持不变 但日期选择器仍然具有取消之前的日期 我想确保每次进入日期选择器时 它都会设置 EditText 中的
  • 当键重复时如何使用 Java Stream API 添加 Map 的内部元素

    我有一个清单List
  • 如何从非活动类中检索上下文?

    我已经发现一个答案 https stackoverflow com questions 4177731 android how to call method from another class without passing contex
  • Symfony 2 调试工具栏未显示

    Symfony 调试工具栏不显示 我正在 app dev php 环境中运行该网站 config dev yml 文件包含以下行 web profiler toolbar true intercept redirects false app
  • 使用 jQuery 动态添加/删除输入字段

    我想使用 jquery 构建动态添加 删除表单 它应该看起来像 姓名类型需要吗 示例输入 姓名类型需要吗 托尼管理员选中 复选框 删除 我得到的是添加 删除输入框的示例 它如何转换为我的想法 我必须使用多列表吗 谢谢你的好心帮助 h1 jQ
  • 如何避免用户删除他的会话

    用例 目前 我正在尝试构建一个页面 用户可以在其中对内容进行投票 赞成 反对票 类似于StackExchange网络上的功能 但用户不需要自己注册即可对内容进行投票 所以这将是一种 匿名 投票页面 它是用 Laravel5 构建的 并使用
  • CModel 与 CFormModel 与 CActiveRecord

    我正在 yii 中构建一个数据库密集型应用程序 所以性能和安全性自然是一个值得关注的问题 除此之外 表单验证也是一个主要标准 为了安全起见 我计划对所有 Sql 查询使用参数绑定 对于验证 我想使用 Yii 提供的验证器 而不是推出我自己的
  • 如何为WCF服务库创建wsdl文件?

    我有一个 WCF 服务库项目 我正在尝试通过在 Visual Studio 中运行 WCF 测试客户端 按下 F5 来启动 WCF 测试客户端来生成 wsdl 文件 它启动了 WCF 测试客户端 但显示 无法添加服务 服务元数据可能无法访问
  • OpenCV:DetectMultiScale() 给出了太多的物体点

    我用以下方法训练了我的电脑opencv traincascade一整天使用 6000 多张类似于以下的正面图像来检测 2 欧元硬币 现在 我刚刚尝试运行一个简单的 OpenCV 程序来查看结果并检查文件cascade xml 最后的结果非常
  • 为什么我的

    这个问题在这里已经有答案了 我有一个正在尝试使用 Flexbox 创建的导航 我希望有一个最大高度 并且有 li 当没有足够的空间时推入新列 我已经显示了 ul 内联柔性 这 li 正在跳到一个新专栏 但是 ul 不随 li 造成溢出效果
  • 如何在禁用 StyleCop 代码分析的情况下创建 Visual Studio 构建配置?

    Question 我已经安装了StyleCop http stylecop codeplex com 现在源代码中到处都是 StyleCop 的波浪线 现在 我希望能够暂时启用和禁用 StyleCop 的分析 我本来期望有一个复选框显示 禁
  • 如何成功传递字符串数组作为参数alamofire

    我有一个接受字符串数组作为参数的端点 但我无法让它与 alamofire 一起使用 我用邮递员测试我的端点 它工作正常 即使在浏览器中也是如此 但是使用 alamofire 它会失败并且只返回整个内容 就好像我没有输入任何参数一样 func
  • Parallels Extensions“Extras”仍然有价值吗?

    The 任务 Parallels Extras 扩展 http blogs msdn com b pfxteam archive 2010 04 04 9990342 aspx于 2010 年发布 此后没有发布任何更新 我将此代码发布为 D
  • Rails中如何管理非自增主键?

    在使用 Rails 时 我有很多情况希望有一个非自动增量主键 示例 我在 A 和 B 之间有一对一的关系 B 描述了添加到 A 的一些特定功能 因此没有 A 就无法存在 所以我们有 A有一个BB 属于 A 自然的想法是将 B A id 作为