我有一个模型,我想验证该名称,如果它是我从其他人的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?
我确信这很简单,有人能指出我正确的方向吗?
答案 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