【发布时间】:2014-06-16 00:25:37
【问题描述】:
我有一个自定义验证,可确保我在 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
【问题讨论】:
-
您说您正在使用 habtm。在这种情况下,根据文档,
<<会立即触发 sql 更新,因此不会在父对象中运行验证。
标签: ruby-on-rails ruby ruby-on-rails-3 validation