我有一个类链接。该类具有这些属性
- 推特
- 知乎
我想编写一个验证,以确保当用户将链接插入文本框时,它以 http 或 https 开头。
验证有效,但是当用户根本不插入链接时我遇到了一个问题。它仍然尝试对空属性运行验证并引发错误。下面的代码是我检查空属性的尝试。
这是我的验证:
class Links < ActiveRecord::Base
attr_accessible :facebook, :twitter, :quora, :pinterest
validate :formatted_link
def formatted_link
links = %w(facebook twitter pinterest quora)
if links.any? {|link| self[link].nil?}
#Don't want it to do any validation if column is nil.
#Would like to drop column if user doesn't add a link.
else
validates_format_of links, :with => URI::regexp(%w(http https))
errors.add(:base, "Your link must start with http or https.")
end
end
原因:
如果用户只是提交“www.twitter.com/username”,则 url 会附加到我的网站 url“mydomain.com/page/www.twitter.com/username”。不知道为什么会这样。如果还有别的我可以做些什么来防止这种情况或我想念的东西,请告诉我。
谢谢。