has_many
在 Rails 中, /belongs_to
关系和有什么区别has_many :through => "table_name"
?
问问题
73 次
2 回答
1
基本上,不同之处在于has_many
/belongs_to
有两个相互关联的模型 - 例如:
电话簿.rb
has_many :contacts
联系方式.rb
belongs_to :phone_book
电话簿可以有任意数量的联系人,但这些给定联系人中的任何一个都属于特定的电话簿。
在has_many :through
关系中有三个模型 - 这是文档中的一个很好的例子:
于 2013-10-14T10:26:58.227 回答
0
双方各有利弊。
HABTM
主要优点是方便。您不必担心关系表,rails 会为您“隐藏”它。
有很多通过
多通:主要优点是灵活性。如果您意识到稍后需要向“关系”添加更多详细信息,您可以将它们添加到关系表中。
例子
让我们举个例子来说明这个问题。假设我们想确定哪些用户说什么语言。因此,我们编写用户 HABTM 语言。一切顺利一段时间。然后需要知道,哪些语言是用户的母语,如果不是母语。
此时,您可以向用户添加“native_language”字段,也可以增强“用户说语言”关系以向其添加“is_native”标志。如果要添加这样的标志,则需要将 HABTM 转换为 has-many-through 关系。
于 2013-10-14T10:29:30.803 回答