2017-01-21 2 views
1

Мои рубины и Rails немного ржавые. У меня есть таблица в моей базе данных, которая называется institutes, которая имеет некоторые заполненные столбцы. Я хочу использовать жемчужину Википедии-клиента, чтобы заполнить некоторые из других. Я хочу использовать атрибут name, чтобы найти страницу в Википедии, а затем использовать page.summary для атрибута description в моей таблице и page.image_urls.first для атрибута picture. На данный момент я изо всех сил пытаюсь понять, как я буду заниматься этим.Использование википедии-клиента Gem для обновления базы данных Rails

Мой текущий код:

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 

Я явно делаю что-то здесь не так, чтобы сделать с выбором и использованием имени атрибута, чтобы найти страницу в Википедии, но не вполне может работать его. Я думаю, что даже если бы я правильно сорвал имя, он не присвоил бы что-либо правильному id.

Если есть еще один способ отбросить «The» в начале имени в Википедии, если он существует в :name, это также было бы полезно, поскольку кажется, что некоторые институты бросают это в Википедию.

ответ

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

Это работало как шарм. Я был не за горами, но очень благодарен за комментарии в коде. Я пойду туда однажды! –

Смежные вопросы