gpt4 book ai didi

ruby-on-rails - Rails 中具有相同键的两个表而不是 has_one 关系

转载 作者:行者123 更新时间:2023-12-03 22:39:44 26 4
gpt4 key购买 nike

我正在开发一个 Rail 网络应用程序。我有两个模型,用户,其中包含非常基本的信息:id、用户名和密码,以及配置文件,其中包括每个用户的配置文件。 (主要原因是要有一个轻量级的用户模型,它将被定期调用,以及一个成熟的配置文件,它将被不定期调用)。这些模型中的每一个都有很多 child 。

现在,我的配置文件有自己的主键,然后是外键 user_id 以与用户匹配。

但是,我想知道我是否应该拥有与用户模型具有相同键的配置文件模型(即,如果记录引用同一用户,则 Profile.id == User.id)。这很方便,因为当我有一个属于 User 的对象时,我希望它属于 Profile,反之亦然。例如,我可以指定 User has_many 和 Spec has_many 与 ChildModel 的关系。因为它们使用相同的 key ,所以我不必将 ChildModel 合并到 Spec,然后将 Profile 合并到 User 以找出与子对象关联的用户。

缺点是在未来,如果由于某种原因我在 User 和 Spec 的主键之间存在差异,那么我就有大麻烦了。

对于这种情况,您有什么建议?

谢谢。

最佳答案

听起来您应该在 ProfileUser 之间使用一对一的关系。您可以使用 has_onebelongs_to 声明创建它。

class User < ActiveRecord::Base
has_one :profile
end

class Profile < ActiveRecord::Base
belongs_to :user
end

使用 Rails 进行敏捷 Web 开发 第四版所述:

There’s an important rule illustrated here: the model for the table that contains the foreign key always has the belongs_to declaration.

关于ruby-on-rails - Rails 中具有相同键的两个表而不是 has_one 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7948245/

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