[英]Rails validation not running when creating new associations
我有一个自定义验证,可确保我在HABTM关联中没有太多关联。 这是Request
模型中的验证
validate :max_tags
MAXIMUM_AMOUNT_OF_TAGS = 5
def max_tags
debugger
unless tags.count < MAXIMUM_AMOUNT_OF_TAGS
errors[:base ] << "You cannot have more than #{MAXIMUM_AMOUNT_OF_TAGS} tags on this gift request."
end
end
每当我创建一个新的Request
时,此验证就会运行; 但是,每当我创建tags
并将其关联到Request
时,它都不会执行。 这是一段代码,在创建新关联时不执行验证
if @request.save
if tags
tags.each do |tag|
tag = Tag.find_by_name(tag)
if tag
self.tags << tag
tag.increment_gift_request_count
end
end
end
end
您可以使用before_add回调验证数字标签,如下所示:
MAXIMUM_AMOUNT_OF_TAGS = 5
has_and_belongs_to_many :tags, before_add: :validate_max_tags
private
def validate_max_tags(tag)
if (tags.count > MAXIMUM_AMOUNT_OF_TAGS)
errors.add(:base, :max_tag_error)
raise ActiveRecord::Rollback
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.