模型验证未被识别 - 团队中的最大球员数

时间:2012-02-05 06:20:36

标签: ruby-on-rails validation model

所以我有一支垒球队和球队的球员。我想拥有它所以你只能为一个团队添加一定数量的玩家(最多3个)。在我的team.rb文件中,我有:

has_many :players
validates :team, :length => {:maximum => 3}

应用程序没有失败,但它也没有认识到3玩家的限制。

任何输入都将不胜感激。

2 个答案:

答案 0 :(得分:1)

知道了,不确定是否有更简单的方法。不得不制作自定义模型验证器

validate :maxplayers

def maxplayers
    unless team.players.count < 3
    errors.add(:base, "You have reached team capacity")
  end
end

请注意,这是在player.rb中,由于某种原因,errors.add_to_base不起作用。 另请注意,它是验证,而不是验证。

答案 1 :(得分:0)

你想要做的事情(如果我做对了!)是为了避免超过3名球员与球队联系,但这不是你写的。

长度验证器检查字段长度,因此,例如,如果您有一个带有名称字段的播放器模型,则可以通过这种方式强制使用最大名称长度:

# In the Player model
validates :name, :length => {:maximum => 30}

你想要做的事情更难,你必须在数据库中检查每个团队最多有3名玩家,可能你必须使用模型钩子......(我也是新手!)