- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道外键用于指定子类上何时有不同的列名(不同于父子的类名)。我知道主键和外键是什么,并且多次阅读关于关联的 Rails 文档,但我无法弄清楚主键选项的用途。
1) 但是 primary_key 选项的用途是什么?调用关联时如何改变sql?
2) 在什么情况下您需要指定关联的主键?
3) 在什么情况下您需要同时指定 primary_key 和 foreign_key?
下面是在关联上指定 foreign_key 选项的示例:
class User
has_many :texts, foreign_key: :owner_id
end
class Text
belongs_to :user, foreign_key: :owner_id
end
User Table
id| name |
Text Table
id| owner_id |name
最佳答案
好的,所以我对 SQL 进行了更多思考并弄明白了。当您的 child 具有与您 parent 的 classname_id 不同的 foreign_key 名称时,您可以使用 foreign_key 选项,但在您的父表上,您仍在使用 ID 作为标识符。
user table
id|name|age
text table
id|random_id|conversations
select * from user where user.id = text.random_id
select * from text where text.random_id (foreign_key) = account.id (primary key)
另一方面,当您根本不想使用 id 来链接关系时,您可以使用 primary_key 和 foreign_key。
user table
id|userable_id|name|age
text table
id|userable_ss_id|conversations
此处:如果您想将 userable_ss_id 链接到 userable_id,您可以在这两个关系中同时包含 primary_key 和 foreign_key 选项。
class User
has_many :texts, primary_key: :userable_ss_id, foreign_key: :userable_id
end
class Text
belongs_to :user, primary_key: :userable_ss_id, foreign_key: :userable_id
end
基本经验法则:
select * from text where text.(foreign_key) = account.(primary key)
关于ruby-on-rails - Rails 关联 primary_key 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235116/
我正在开发一个使用 rails 的代码库,之前的开发人员已经在 postgres 中创建了一些相互引用的模型。然而,他们使用 activerecord 的 primary_key 字段,即使数据库没有
在 .net 中创建 Edmx 时存在一个问题,即在创建数据库的 Edmx 时,仅添加具有主键的那些表和 View 。 这个问题很容易解决,但只是在 Table 或 View 中创建一个列主键,但我没
我读到,UUID 作为主键的插入性能取决于数据库中存在多少条记录。记录数量越多,插入记录所需的时间就越长 https://kccoder.com/mysql/uuid-vs-int-insert-pe
我有一个简单的 SQLAlchemy 模型,其中有一列用于 ID: id = Column(Integer, primary_key=True) 这将使 id 从 0 开始,并自动递增 1。如
我在 symfony 4 中的一个项目中工作,数据库在 postgresql 中。有两种更新数据库的方法: 方法 1. 通过带有普通 sql 插入的 python 脚本 方法2.通过symfony表单
我正在使用公共(public)事件 gem 在我的应用程序上创建事件流。为此,我有这个设置。 我已经为我的应用设置了一个友谊模型, create_table "friendships", force:
我有一个基于 WordPress 3.7.1 构建的网站。使用插件我进行数据库备份,但是当我尝试在开发服务器上导入该数据库时,我收到此错误: ERROR 1062 (23000) at line 94
我正在尝试在 Diesel 中使用 #[primarykey()] 宏,但出现未知错误。根据我的发现,添加 #![feature(primary_key)] 应该可以解决问题,但事实并非如此。 lib
我正在尝试创建一个使用 UUID_SHORT() 作为主键的表。我有一个触发器,可以在您执行插入操作时插入一个值。我无法让 sqlalchemy 将列识别为 primary_key 而不会提示不提供默
我们正在迁移我们的 Oracle 数据库并对其进行必要的更改,一个主要更改是我们将 UUIDField 添加为所有模型的主键(对客户端隐藏),并且(尝试添加) 一个常规的 AutoField。 我们发
我正在尝试通过以下方式创建与 rails has_many 的多对多关系:但我需要使用不同的列来创建关系,而不是使用模型主键 (id)。这是我的模型(顺便说一句,我使用的是 Rails 4): cla
我看到已经回答了一个非常相似的问题,讨论了同样的问题,但我似乎无法理解。下面是我在存储过程中的代码的副本。我需要以某种方式将第二个插入语句插入从第一个生成的 CompanyID 到第二个语句中。我很感
我知道外键用于指定子类上何时有不同的列名(不同于父子的类名)。我知道主键和外键是什么,并且多次阅读关于关联的 Rails 文档,但我无法弄清楚主键选项的用途。 1) 但是 primary_key 选项
您好,我正在测试Django身份验证和嵌套用户数据。我为用户创建了一个简单的MyProfil模型。我想测试制作自定义的id并将primary_key=True设置为id = models.UUIDFi
我知道外键用于指定子类上何时有不同的列名(不同于父子的类名)。我知道主键和外键是什么,并且多次阅读关于关联的 Rails 文档,但我无法弄清楚主键选项的用途。 1) 但是 primary_key 选项
我试图在模型中保存大量对象,因此我决定通过这种方式使用bulk_create: while True: batch = list(islice(records, 100)) if no
我有一个表,其中有一列包含另一个表中一行的 ID。但是,当表 A 被填充时,表 B 可能有也可能没有为表 A 准备好的行。 我的问题是,是否可以让 mysql 阻止输入无效值,但可以输入 NULL?还
我正在尝试在我的 helpdesk/models.py 中创建一个自定义的 primary_key,我将用它来跟踪我们的服务台票证。我正在为我们的办公室编写一个小型滴答系统。 也许有更好的方法?现在我
我需要添加一个不是主键的 autoinc 字段。我正在将使用自动递增字段的非常大的生产数据库迁移到 models.UUIDField .我一直在进行分段迁移,现在我的所有关系都与这两种字段类型重复。我
我的一个查询遇到了问题,有时速度很慢。 SELECT * FROM table WHERE primary_key IN (1,2,...) 对于大约 100 个条目,有时甚至需要 5 秒。显然我们在
我是一名优秀的程序员,十分优秀!