首页 > 解决方案 > 具有一种关联类型的 Rails 模型自定义验证

问题描述

我有一个具有has_and_belongs_to_many关联的模型用户。

应用程序/模型/user.rb

has_and_belongs_to_many :advisors, dependent: :destroy
has_and_belongs_to_many :teams, dependent: :destroy

我希望任何一个用户都有顾问协会或有团队。所以想在模型级别添加验证但不明白必须做什么。

标签: ruby-on-railsrubyactiverecordruby-on-rails-5has-and-belongs-to-many

解决方案


您可以使用自定义验证方法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

如果顾问和团队都在场,这将给对象添加一个错误。


推荐阅读