2014-04-17 2 views
0

아래 코드에서 url_exist?을 웹 사이트의 유효성 검사로 호출하려고 시도하지만 url_exist?을 웹 사이트의 값으로 호출하는 방법이 확실하지 않습니다. 이것은 어리석은 질문처럼 보이지만, 나는 그것을 이해할 수 없다. 이 개체의 속성 중 하나이기 때문에매개 변수가있는 레일 유효성 검사

모델

validates :website, presence: true, if: :url_exist? 
... 
def url_exist?(url_string) 
    url = URI.parse(url_string) 
    puts url 
    binding.pry 
    req.use_ssl = (url.scheme == 'https') 
    req = Net::HTTP.new(url.host, url.port) 
    path = url.path if url.path.present? 
    req.request_head(path || '/') 
    res.code != "404" # false if returns 404 - not found 
rescue Errno::ENOENT 
    false # false if can't find the server 
end 

답변

1

이미 website의 가치를 알고있다. 그래서, 당신의 url_exist? 함수에서 참조하십시오.

validates :website, presence: true, if: :url_exist? 

# ... 

def url_exist? 
    url = URI.parse(self.website) 
    puts url 
    # ... 
end 

는 I는 또한 지금 당신의 url_exist? 기능은 항상 false를 반환합니다, 당신은 당신이 게시 된 조각의 끝으로 몇 가지 코드를 놓치고있는 것 같다 있음을 알아 두셔야합니다.