使用这个宝石 https://github.com/sinisterchipmunk/gravatar 我如何检查指定电子邮件的格式是否存在?我想我错过了一些强制默认选项?因为这个
url = Gravatar.new("generic@example.com").image_url
总是返回图片
答案 0 :(得分:41)
如果人们想知道怎么做而没有任何宝石:
诀窍是使用假默认图像获取gravatar图像,然后检查标头响应。 它是通过Net :: HTTP ruby库实现的。
require 'net/http'
def gravatar?(user)
gravatar_check = "http://gravatar.com/avatar/#{Digest::MD5.hexdigest(user.gravatar_email.downcase)}.png?d=404"
uri = URI.parse(gravatar_check)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
response.code.to_i != 404 # from d=404 parameter
end
答案 1 :(得分:8)
看一下gem的文档,听起来你需要一个API密钥才能运行exists方法:
很好,但是如en.gravatar.com/site/implement/xmlrpc所宣传的其他API怎么样?那么,你需要用户的Gravatar密码或他们的API密钥:
api = Gravatar.new(“generic@example.com”,:api_key =>“AbCdEfG1234”)
api.exists?(“another@example.com”)#=> true或false,具体取决于指定的电子邮件是否存在。
如果用户没有gravatar,将根据电子邮件为他们生成图像(至少这是我的经验)。我使用了gem gravatar_image_tag - http://rubygems.org/gems/gravatar_image_tag,可以让你更改默认的重力图像。
答案 2 :(得分:1)
if (response.code.to_i == 404)
return false
else
return true
end
而不是整个块,只使用它(作为最后一行):
response.code.to_i != 404