validate作为可标记的

时间:2015-04-05 12:32:54

标签: ruby-on-rails validation acts-as-taggable-on

我正在使用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

1 个答案:

答案 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