2017-01-21 63 views
1

我的紅寶石和Rails有點生疏。我在我的數據庫中有一個名爲institutes的表格,其中有一些列已填充。我想使用Wikipedia-Client gem來填充其他一些。我想使用name屬性來查找Wikipedia上的頁面,然後在我的表格中使用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 

我清楚在這裏做得不對與選擇和使用name屬性,找到Wikipedia頁面做的,但不能完全解決它。我認爲即使我要正確採用該名稱,它也不會將任何內容分配給正確的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

這就像一個魅力的工作。我並不遙遠,但非常感謝代碼中的評論。有一天我會到達那裏! –