我正在开发一个应用程序,该应用程序可以绕过其中一家电影院的API。所以我正在使用他们的XML文件,该文件每天都会更新(只是一个包含简单细节的电影列表(。我使用 Nokogiri 获取数据(我可能需要 Cron,所以它会每天自动解析(:
require 'open-uri'
@doc=Nokogiri::XML(open("http://www.kinoballada.info/repertuar/export/small/dzien/xml"))
@doc.css('dzien').each do |node|
children=node.children
Movie.create(
:name => children.css('tytul').inner_text
)
dzien=day
Tytul=标题
它应该每天检查数据库。如果标题在数据库和 XML 中,则它不执行任何操作。如果标题在数据库中而不是在 XML 中,则应从数据库中删除此标题。如果标题不在数据库中,并且在XML中,则可以在数据库中创建新标题。
简而言之 - 数据库包含与XML文件相同的标题。
问题是 - 我没有使用Ruby或Rails的经验,也不知道如何使用循环,明天我需要它,所以没有时间赶上。谁能帮我循环?
这里有一种方法...
require 'open-uri'
@doc=Nokogiri::XML(open("http://www.kinoballada.info/repertuar/export/small/dzien/xml"))
movie_array = []
@doc.css('dzien').each do |node|
children=node.children
movie_array << children.css('tytul').inner_text
Movie.find_or_create_by(
:name => children.css('tytul').inner_text
)
end
movies_to_delete = Movie.where.not(name: movie_array)
movies_to_delete.destroy_all
另外 - 我在使用 Cron 时我的 schedule.rb 文件应该看起来像这样吗?
every 1.day, at '0:00' do
runner "db:seeds"
就这么简单?