Ruby on rails 如何使用嵌套范围?

Ruby on rails 如何使用嵌套范围?,ruby-on-rails,Ruby On Rails,在我的项目中,我有一个运动员模型(继承了用户父模型),它有很多:教练联系人。在CoachContact模型中,我需要它验证每个运动员每个运动id的contact_type属性的唯一性 例如,一名运动员可以拥有的教练联系人的最大数量是无限的(假设存在无限数量的不同运动),但是一名运动员每项运动可以拥有的教练联系人的最大数量是两个。不仅如此,它们必须是不同类型的。教练联系人有两种类型,“学校教练”和“俱乐部教练”,拥有这些教练联系人的运动员在同一项运动中不能有两种。下面是Coach联系人模型: cl

在我的项目中,我有一个运动员模型(继承了用户父模型),它有很多:教练联系人。在CoachContact模型中,我需要它验证每个运动员每个运动id的contact_type属性的唯一性

例如,一名运动员可以拥有的教练联系人的最大数量是无限的(假设存在无限数量的不同运动),但是一名运动员每项运动可以拥有的教练联系人的最大数量是两个。不仅如此,它们必须是不同类型的。教练联系人有两种类型,“学校教练”和“俱乐部教练”,拥有这些教练联系人的运动员在同一项运动中不能有两种。下面是Coach联系人模型:

class CoachContact < ActiveRecord::Base
  belongs_to :athlete

  validates_presence_of :name, :email, :sport_id, :athlete_id, :contact_type

end
但是,不可能是这样的:

Athlete
    ->Football
        1. Club coach
        2. Club coach
    ->Baseball
        1. School coach
    ->Basketball
        2. Club coach
那么,我应该如何在Coach联系人模型中验证这一点


谢谢

您可以使用作用域唯一性验证器:

validates :contact_type, uniqueness: { scope: [:athlete_id, :sport_id] }

这不是每个运动员id只允许一个吗?这不应该是
验证:联系人类型,唯一性:{scope:[:运动员id,:运动id]}
是的,其他语法不起作用,但meagar的语法起作用了。谢谢大家!
validates :contact_type, uniqueness: { scope: [:athlete_id, :sport_id] }