has_many :through
主要是在建立多對多關聯資料庫的時候使用。
例如一個球隊
可以有很多球員
,一個球員
可以參加很多球隊
,這個就是多對多關係。在這裏球員跟球隊都是一個model,要建立多對多關係時我們會需要第三個model扮演連接的橋樑。第三個Model就是體育協會
,負責登記每個球員所屬的球隊以及球隊目前的成員。如此一來我們就可以從體育協會得知每個球隊和球員的狀況(所以叫作through
)。
所以球員
throuth體育協會
has_many球隊
,舉例:
model/player.rb
class Player < ActiveRecord::Base
# 先告訴model我們在體育協會有很多筆資料
has_many :sports_associations
# 這些資料是要拿來判斷這個球員有參與多少球隊
has_many :teams, :through => :sports_associations
end
model/team.rb
class Team < ActiveRecord::Base
has_many :sports_associations
has_many :players, :through => :sports_associations
end
model/sports_associations.rb
class SportsAssociations < ActiveRecord::Base
#體育協會要對球員和球隊負責,所以體育球隊belongs_to球員和球隊
belongs_to :team
belongs_to :player
end