ruby-on-rails - 具有一种关联类型的 Rails 模型自定义验证
问题描述
我有一个具有has_and_belongs_to_many
关联的模型用户。
应用程序/模型/user.rb
has_and_belongs_to_many :advisors, dependent: :destroy
has_and_belongs_to_many :teams, dependent: :destroy
我希望任何一个用户都有顾问协会或有团队。所以想在模型级别添加验证但不明白必须做什么。
解决方案
您可以使用自定义验证方法https://guides.rubyonrails.org/active_record_validations.html#custom-methods
validate :only_one_association_type
private
def only_one_association_type
errors.add(:base, "can't have both types of associations") if advisors.any? && teams.any?
end
如果顾问和团队都在场,这将给对象添加一个错误。