Rails 4验证不起作用

时间:2014-03-26 18:14:07

标签: ruby ruby-on-rails-4

我有一个模型,我想验证该名称,如果它是我从其他人的API获得的数组的一部分。

class Model < ActiveRecord::Base
  validate :exists_at_api?

  def exists_at_api?
    api_data.detect { |d| d == self.name }
  end
end

发送无效数据时出现问题

调用验证,并返回false,但模型仍然保存。

我也尝试了以上相同的结果:

validate :name, if: :exists_at_api?

我确信这很简单,有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

您需要在errors哈希中添加一些内容以指示失败。有关详细信息和示例,请参阅the Rails documentation

尝试类似:

validate :exists_at_api?

def exists_at_api?
  if api_data.detect { |d| d == self.name }
    errors.add(:name, "can't be whatever...")
  end
end