我正在使用acts-as-taggable-on添加标记。我的模型中有这个:
acts_as_taggable
validates_inclusion_of :tag_list, in: %w( bug feature )
但是,如果我尝试使用rails控制台:
i = Issue.find(1)
i.tag_list = "bug"
i.save
验证失败,并且未保存问题tag_list。如果我删除验证行,那么当然我可以添加tag_list。 我也尝试编写自定义验证:
validate :tag_list_inclusion
def tag_list_inclusion
tag_list.each do |tag|
return false unless %w(bug feature).include?(tag)
end
return true
end
我的自定义验证确实有效,因为它始终返回true并始终通过验证(即使它不应该)。 只有验证才能正常工作:
validates_presence_of :tag_list
答案 0 :(得分:2)
我在这里找到答案:http://guides.rubyonrails.org/active_record_validations.html#custom-methods
我的自定义验证器是:
def tag_list_inclusion
tag_list.each do |tag|
errors.add(tag,"is not valid") unless %w(bug feature).include?(tag)
end
end