gpt4 book ai didi

ruby-on-rails - 使用外键作为复合键的一部分

转载 作者:行者123 更新时间:2023-12-04 11:02:38 24 4
gpt4 key购买 nike

所以,我正在创建这个有点像 Google Analytics(分析)的应用程序。用户安装在他的博客上截取的 JS,然后 JS 发送与每个帖子相关的指标。安装它所需的唯一额外信息是他的 site_id(有点像 google analytics id)。此应用程序将仅适用于 wordpress,并且对于每篇博文,将在 posts 表中创建一个条目,因此我进行了以下迁移:

class CreatePosts < ActiveRecord::Migration[6.0]
def change
create_table :posts, primary_key: %i[id site_id] do |t|
t.belongs_to :site, null: false
t.bigint :id
t.bigint :post_id
t.string :url

t.timestamps
end
end
end

我创建了这个复合键,外键 (site_id) 是其中的一部分。我想知道这是否可以,是否会破坏 ActiveRecord 的任何方面。

我知道它可能看起来很奇怪,所以让我解释一下为什么我需要它。

帖子的 id 将与 wordpress 博客帖子数据库中使用的 id 相同,假设我有两个用户,每个用户有一个网站,每个用户包含 5 个帖子。如果他们的博客文章包含相同的 id,这将是一个问题......但是如果我有一个复合键 site_id + post_id 就可以了.我唯一担心的是这是否会破坏 ActiveRecord 处理关联的方式。

我正在做一些测试,一切似乎都正常,但我不确定,因为尽管创建帖子有效,但此警告不断出现:

WARNING: Active Record does not support composite primary key.

posts has composite primary key. Composite primary key is ignored.

谢谢。

最佳答案

因此,Rails ActiveRecord 默认不支持复合主键。这就是您会看到此消息的原因 ( here is the source )

不过,如果你想使用这个功能,你可以试试composite_primary_keys gem

所以你可以做类似的事情

# after installing the gem
class Post < ActiveRecord::Base
self.primary_keys = :id, site_id
...
end

关于ruby-on-rails - 使用外键作为复合键的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58701736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com