gpt4 book ai didi

ruby-on-rails - has_many 通过关联的好名字

转载 作者:行者123 更新时间:2023-12-04 05:47:50 25 4
gpt4 key购买 nike

我已经阅读了 rails 3 中的多对多关系,并看到 HABTM 已被“弃用”,因为应该使用 has_many :through大多数时候。

我看到了很多 Join 模型有明确名称的例子,例如 Magazine、Suscriber = Subscriptions。

但就我而言,我找不到一个好名字:/有什么我应该注意的约定吗? Top 包含 1 个或 * 个创意,一个创意可以在 1 个或 * 个 Tops 中。最后,这是最好的方法吗?

这是我的代码:

class Top < ActiveRecord::Base  
has_many :???
has_many :ideas, :through => :???
end

class Idea < ActiveRecord::Base
has_many :???
has_many :ideas, :through => :???
end

class ??? < ActiveRecord::Base
belongs_to :top
belongs_to :idea
end

另外通过使用 has_many ,我不需要手动创建连接表,对吗?

谢谢你的帮助 :)

编辑 :
一个顶部就像一个排名。因此,顶部是按投票排序的想法的表示。一个想法是一个想法(一般来说)。例如,可以是 ruby​​ on rails 的最佳实践和“使用 has_many through 而不是 HABTM”的想法。
所以一个顶部包含 1 个或 * 个想法,一个想法可以属于 1 个或 * 个顶部。对于想法,它更像是一个belongs_to_many,但它在ror 中不存在。

最佳答案

首先,一个Idea真的有很多子Idea吗?这听起来像是应该规范化/重新考虑的奇怪关系。

@gabrielhilal 提出了一个很好的建议,但我建议备份一下并重命名 IdeaTop 表,以减少不透明。例如,如果 Top 是 Topic 的缩写,则 Idea 似乎更像是对 Topic 的“评论”,那么您的直通类(class)可能是 TopicComment 或诸如此类。

无论如何,我认为您应该首先重命名这些表以使其更有意义(或向我们解释它们以便我们理解)然后继续@gabrielhilal 建议仅使用两个表的组合来命名连接表 — 是常见的做法,除非第三个表有自己的特定含义 (或有自己的属性),例如 Product + Sale = Invoice(其中 invoice 是连接表)

关于ruby-on-rails - has_many 通过关联的好名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11086137/

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