-1

has_many在 Rails 中, /belongs_to关系和有什么区别has_many :through => "table_name"

4

2 回答 2

1

基本上,不同之处在于has_many/belongs_to有两个相互关联的模型 - 例如:

电话簿.rb

has_many :contacts

联系方式.rb

belongs_to :phone_book

电话簿可以有任意数量的联系人,但这些给定联系人中的任何一个都属于特定的电话簿。

has_many :through关系中有三个模型 - 这是文档中的一个很好的例子:

has_many:通过

于 2013-10-14T10:26:58.227 回答
0

双方各有利弊。

HABTM

主要优点是方便。您不必担心关系表,rails 会为您“隐藏”它。

有很多通过

多通:主要优点是灵活性。如果您意识到稍后需要向“关系”添加更多详细信息,您可以将它们添加到关系表中。

例子

让我们举个例子来说明这个问题。假设我们想确定哪些用户说什么语言。因此,我们编写用户 HABTM 语言。一切顺利一段时间。然后需要知道,哪些语言是用户的母语,如果不是母语。

此时,您可以向用户添加“native_language”字段,也可以增强“用户说语言”关系以向其添加“is_native”标志。如果要添加这样的标志,则需要将 HABTM 转换为 has-many-through 关系。

于 2013-10-14T10:29:30.803 回答