实现has_n的最佳方式

时间:2012-05-15 03:06:25

标签: ruby-on-rails model-view-controller database-design

如何针对给定的has_n在Rails上实现n关联?比方说橄榄球队吧。它有15名球员。您是否将其作为has_many实施并在保存前检查以确保它有15个玩家,或者您是否愿意将其实施为15 belongs_to?请注意,在这种情况下,订单很重要。

2 个答案:

答案 0 :(得分:1)

编辑以反映您的订购请求......

您需要在player表中添加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

答案 1 :(得分:0)

我更喜欢通过has_many制作并在添加新玩家时验证玩家的数量。

我认为这是建立一对多关系的正确方法。