在Rails中,has_many
/ belongs_to
关系和has_many :through => "table_name"
之间有什么区别?
答案 0 :(得分:1)
基本上,区别在于has_many
/ belongs_to
中有两个相互关联的模型 - 例如:
Phone_book.rb
has_many :contacts
Contact.rb
belongs_to :phone_book
电话簿可以包含任意数量的联系人,但这些联系人中的任何一个都属于特定的电话簿。
在has_many :through
关系中有三种模式 - 这是documentation中的一个很好的例子:
答案 1 :(得分:0)
双方都有利弊。
主要优点是方便。你不必担心关系表,rails会为你隐藏这个。
有很多通过:主要优点是灵活性。如果您发现以后需要在“关系”中添加更多详细信息,可以将它们添加到关系表中。
让我们举一个例子来说明这个问题。让我们说我们想要确定哪些用户说什么语言。所以,我们编写用户HABTM语言。一切都很好。然后需要知道,哪些语言是用户的母语,如果不是母语。
此时,您可以向用户添加“native_language”字段,也可以增强“用户说话语言”关系,为其添加“is_native”标志。如果要添加此类标志,则需要将HABTM转换为has-many-through关系。