1
ユーザーからURLを取得するためのテキスト形式があります。モデル内のレスキュー例外の後で無効です
コントローラー:私のモデルでは
def create
link = Link.new(set_url_params)
if link.save
redirect...
else
flash[:notice] = "error"
end
end
私は与えられたリンクがそれを持っていない場合は、HTTPを追加する方法があります:
before_validation :clean_link
def clean_link
self.url = "http://#{url}" unless self.url =~ /^https?:\/\//
end
今私は、URLが応答有効にたいと思います( +リダイレクト後に最終リンクを取得)、保存するか、エラーメッセージを表示してください:
validate :response?
def response?
begin
self.url = HTTParty.head(self.url).request.last_uri.to_s
rescue SocketError
false
end
end
Example with valid URL:
input: cvcka.cz
clean_link: http://cvcka.cz
respond? https://cvcka.cz
link.valid? True
Invalid URL:
input: dada
clean_link: http://dada
respond?: rescue exception and return false
link.valid? - it returns true instead of false.
なぜlink.validですか?文字列 "dada"はfalseの代わりにtrueです。
素晴らしい、ありがとうございました! – Dudis