哪个是更好的描述has_many / belongs_to和has_many通过Rails

时间:2013-10-14 10:19:53

标签: ruby-on-rails ruby database-schema

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

2 个答案:

答案 0 :(得分:1)

基本上,区别在于has_many / belongs_to中有两个相互关联的模型 - 例如:

Phone_book.rb

has_many :contacts

Contact.rb

belongs_to :phone_book

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

has_many :through关系中有三种模式 - 这是documentation中的一个很好的例子:

has_many :through

答案 1 :(得分:0)

双方都有利弊。

HABTM

主要优点是方便。你不必担心关系表,rails会为你隐藏这个。

有很多通过

有很多通过:主要优点是灵活性。如果您发现以后需要在“关系”中添加更多详细信息,可以将它们添加到关系表中。

实施例

让我们举一个例子来说明这个问题。让我们说我们想要确定哪些用户说什么语言。所以,我们编写用户HABTM语言。一切都很好。然后需要知道,哪些语言是用户的母语,如果不是母语。

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