私は次のモデルを持っています
class Business < ActiveRecord::Base
has_and_belongs_to_many :categories
validates_presence_of :category_ids
end
class Category < ActiveRecord::Base
has_and_belongs_to_many :businesses
end
category_ids
属性を使用して、ビジネス作成フォームを介して関係を設定しています。
使ってみvalidates_presence_of
ましたが、カテゴリの存在を確認できません。
ブラウザからフォームを操作し、カテゴリに存在しないIDを指定できます。フォームを送信した後、エラーが発生します。
Couldn't find Category with id=181723
編集:
次のカスタム検証方法を追加しましたが、検証が実行されていないかのように、同じエラーが発生します。
class Business < ActiveRecord::Base
has_and_belongs_to_many :categories
validate :categories_exist
def categories_exist
category_ids.each do |c|
errors.add(:category_ids, :category_doesnt_exist) unless Category.exists? c
end
end
end