2012-05-15 233 views
0

如何在給定n的Rails上實現has_n關聯?比如說橄欖球隊。它有15名球員。你會實施它作爲has_many並保存之前檢查,以確保它有15名球員,或者你更願意實施它爲15 belongs_to?請注意,在這種情況下,訂單很重要。最佳實施方法has_n

+0

我認爲你的問題是直接關係到這個[問題](http://stackoverflow.com/q/4836897/22371)。 – kafuchau

+0

我不認爲它是直接相關的。該問題使用連接表。這裏沒有必要。 –

回答

1

編輯,以反映您的訂購請求......

你需要一個sort_key添加到播放器表。您可以使用整數,但浮點數總是更靈活的選擇。然後使用:order => "sort_key"短語。

class Team < ActiveRecord::Base 
    has_many :players, :order => "sort_key", :inverse_of => :team 
end 

class Player < ActiveRecord::Base 
    belongs_to :team, :inverse_of => :players 

    validate :validate_players_count, :on => :create 
    def validate_players_count 
    if team.players.size > 15 
     errors[:base] << "a team can only have 15 players" 
    end 
    end 
end 
+0

那麼你會如何將玩家的第一個位置改變爲第四個位置? – fotanus

+0

編輯我的答案以反映訂購請求。 –

+0

謝謝,那就是我需要的。現在從位置改變兩個玩家,我所要做的就是更新排序鍵。 – fotanus

0

我更願意通過has_many製作,並在添加新玩家時驗證玩家數量。

我認爲這是建立一對多關係的正確方法。