【发布时间】:2017-02-26 21:11:11
【问题描述】:
我有一个可选的表单字段:meetup_apikey 和一个自定义验证方法api_key_valid? 来检查返回的API 请求是否成功。但如果meetup_apikey 表单字段不为空(用户在表单提交时输入了一些内容),我只想检查验证。如果meetup_apikey 表单字段为空,我想忽略验证并允许保存表单。
查看:http://guides.rubyonrails.org/v2.3.11/activerecord_validations_callbacks.html 文档和Validation to ensure uniqueness of but ignoring empty values?。
这就是我的模型中的内容:
validates :meetup_apikey, allow_blank: true
validates :api_key_valid?, :if => :meetup_apikey
def api_key_valid?
url = "https://api.meetup.com/2/events?key=#{meetup_apikey}&sign=true&photo-host=public&group_urlname=#{meetup_urlname}"
if !HTTParty.get(url).success?
errors.add(:meetup_apikey, "Meetup API key must be valid")
end
end
但这仍然会强制检查,即使在 :meetup_apikey 表单字段中没有输入任何内容。我不确定我遗漏了什么或写错了什么。
任何建议都会有所帮助。谢谢!
【问题讨论】:
-
您可以在属性名称后添加问号以测试其是否存在(
"".present?返回false)。validates :api_key_valid?, :if => :meetup_apikey? -
谢谢@MrYoshiji,这对我有用,它更短更容易理解。
标签: ruby-on-rails forms validation