has_one 通过 has_many 与动态条件的关联 - Rails
has_one association through has_many with dynamic conditions - Rails
我有三个表:
class Keeper
has_many :assignments
end
class Assignment
belongs_to :keeper
belongs_to :assignment_group
end
class AssignmentsGroup
has_many :assignments
validate :uniqueness_of_keeper
end
与单个 assignment_group 关联的作业必须有一个管理员。我的问题是:如果所有关联的分配都具有相同的管理员,我如何将 has_one: keeper
关联添加到 AssignmentsGroup
?
抱歉,如果我误解了你的问题,因为我不清楚 AssignmentGroup
和 Assignment
之间的关联应该是什么,但是试试这个:
class Keeper
has_many :assignments
end
class Assignment
belongs_to :keeper
belongs_to :assignment_group # will need to add a reference to the assignments table
end
class AssignmentsGroup
has_many :assignments
has_many :keepers, through: assignments
validate :single_keeper
private
def single_keeper
errors.add(:base, "can only have one keeper") unless keepers.uniq.length == 1
end
end
见https://guides.rubyonrails.org/active_record_validations.html#custom-methods
我有三个表:
class Keeper
has_many :assignments
end
class Assignment
belongs_to :keeper
belongs_to :assignment_group
end
class AssignmentsGroup
has_many :assignments
validate :uniqueness_of_keeper
end
与单个 assignment_group 关联的作业必须有一个管理员。我的问题是:如果所有关联的分配都具有相同的管理员,我如何将 has_one: keeper
关联添加到 AssignmentsGroup
?
抱歉,如果我误解了你的问题,因为我不清楚 AssignmentGroup
和 Assignment
之间的关联应该是什么,但是试试这个:
class Keeper
has_many :assignments
end
class Assignment
belongs_to :keeper
belongs_to :assignment_group # will need to add a reference to the assignments table
end
class AssignmentsGroup
has_many :assignments
has_many :keepers, through: assignments
validate :single_keeper
private
def single_keeper
errors.add(:base, "can only have one keeper") unless keepers.uniq.length == 1
end
end
见https://guides.rubyonrails.org/active_record_validations.html#custom-methods