1
class Room 
    has_many :room_markers 
    has_many :rooms, through: :room_markers 
end 

class Marker 
... 
end 

class RoomMarker 
    belongs_to :room 
    belongs_to :marker 
end 

我有一組類如上所述。我應該從has_many:通過移動到has_and_belongs_to_many

現在我認識到Room可能有has_and_belongs_to_many伴隨Maeker代替has_many_through

現在的問題是「我應該重構那些模型?有has_and_belongs_to_many協會,而不是has_many_through」。

如果我繼續使用現有設計,是否有任何性能相關問題?

回答

1

簡單更好。如果你不需要額外的模型,你應該重構。

最簡單的經驗法則是,如果您需要將關係模型作爲獨立實體工作,則應該設置has_many:through關係。如果你不需要對關係模型做任何事情,可以更簡單地設置has_and_belongs_to_many關係(儘管你需要記住在數據庫中創建連接表)。

guides

我不認爲你必須擔心在這個級別的性能,只要採取適合您的需求的解決方案。

+0

我猜,其中大部分是關於約定的。有一個額外的模型可能會有一些性能問題。 – Muntasim