我有以下型号
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