2017-01-21 1 views
1

루비와 레일이 녹슬 었습니다. 데이터베이스에 institutes이라는 테이블이 있는데 여기에는 채워진 열이 몇 개 있습니다. 나는 다른 것들을 채우기 위해 Wikipedia-Client gem을 사용하고 싶다. name 속성을 사용하여 Wikipedia에서 페이지를 찾은 다음 내 테이블에 description 속성의 경우 page.summary을, picture 속성의 경우 page.image_urls.first을 사용하고 싶습니다. 현재 나는 이것에 대해 어떻게 생각 하는지를 고민하고있다.Wikipedia-Client Gem을 사용하여 레일 데이터베이스 업데이트

나의 현재 코드는 다음과 같습니다

나는 명확하게 선택과 위키피디아 페이지를 찾을 수있는 이름 속성의 사용과 함께 할 여기에 뭔가를 잘못하고 있어요
require 'Wikipedia' 
Institute.each do |institute| 
    school = institute.pluck(:name) 
    page = Wikipedia.find(school) 
    description = page.summary 
    picture = page.image_urls.first 
    Institute.update!(description: description, picture: picture) 
end 

하지만, 아주 그것을 밖으로 작동하지 않을 수 있습니다. 나는 이름을 바르게 골라 내더라도 올바른 이드에게 아무 것도 지정하지 않을 것이라고 생각합니다.

:name에 존재하는 위키 피 디아 검색에서 이름의 시작 부분에 "The"를 놓을 수있는 방법이 있다면 위키 피 디아에서 일부 기관에서이를 삭제하는 것처럼 도움이 될 것입니다.

답변

0

당신은 같은 것을 사용하려고 할 수 있습니다 마법처럼 일 것

#use https://github.com/kenpratt/wikipedia-client 
require 'wikipedia' 

#select all Institutes through AR model 
Institute.all.each do |institute| 
    #'institute' is an object, so we can get its name by dot operator 
    school = institute.name 

    #try to find school as is 
    #then try to find without 'The' 
    #and go ahead only if page exists 
    page = Wikipedia.find(school) 
    page = Wikipedia.find(school[3..-1].strip) if page.content.nil? and school[0..2].downcase == 'the' 
    next if page.content.nil? 

    description = page.summary 
    picture = page.image_urls.first 
    #update Institute object 
    institute.update!(description: description, picture: picture) 
end 
+0

. 나는별로 멀지 않았지만 코드의 주석에 대해 대단히 감사합니다. 나는 언젠가 거기에 도착할 것이다! –

관련 문제