无法从 Mongo DB Rails Rake 中获取值
Cannot get value from Mongo DB Rails Rake
希望你能帮我解决我找不到答案的问题。
我有这个应用程序并试图检索和更新数据库中记录的值。
我在 rails 应用程序中的 rake 命令如下所示:
task :nokogiri => :environment do
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::XML(open(url))
data = doc.at_css(".lister-list")
movies = data.css('.titleColumn')
current_time = Time.now.strftime("%d/%m/%Y %H:%M")
movies.each do |movie|
headline = movie.text.strip
found = Movie.where("title" => headline).first
if found.nil?
title = Movie.new
title._id = BSON::ObjectId.new
title.title = headline
title.current_time = current_time.to_s
title.save
puts "Record created"
else
# arr = found.to_a.to_json
# puts arr.title
puts found.title
puts "Record exist"
end
end
end
问题是我可以将 "arr" object 输出到控制台,但我无法检查标题字段。我不断收到:
rake aborted!
NoMethodError: undefined method `title' for #<String:0x007f68589d93e8>
我做错了什么?我如何用 current_time 更新记录?
p.s。我是 rails 的新手,所以您的帮助对我有很大帮助,而您是最后一个可以帮助我的人。
谢谢!
编辑:答案很简单,where函数,我们必须限制结果并把它放在.first。然后我们可以像往常一样得到object值found.title
在 else
分支中你这样说:
arr = found.to_a.to_json
to_json
returns一个String
。然后你说:
puts arr.title
但是没有 String#title
方法,所以你得到一个 NoMethodError
。也许你的意思是:
puts found.title
还有,你真的想说 found.to_a.to_json
而不是 found.to_json
吗? to_a
调用只是将 found
包装在单个元素数组中。
希望你能帮我解决我找不到答案的问题。 我有这个应用程序并试图检索和更新数据库中记录的值。
我在 rails 应用程序中的 rake 命令如下所示:
task :nokogiri => :environment do
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::XML(open(url))
data = doc.at_css(".lister-list")
movies = data.css('.titleColumn')
current_time = Time.now.strftime("%d/%m/%Y %H:%M")
movies.each do |movie|
headline = movie.text.strip
found = Movie.where("title" => headline).first
if found.nil?
title = Movie.new
title._id = BSON::ObjectId.new
title.title = headline
title.current_time = current_time.to_s
title.save
puts "Record created"
else
# arr = found.to_a.to_json
# puts arr.title
puts found.title
puts "Record exist"
end
end
end
问题是我可以将 "arr" object 输出到控制台,但我无法检查标题字段。我不断收到:
rake aborted!
NoMethodError: undefined method `title' for #<String:0x007f68589d93e8>
我做错了什么?我如何用 current_time 更新记录?
p.s。我是 rails 的新手,所以您的帮助对我有很大帮助,而您是最后一个可以帮助我的人。
谢谢!
编辑:答案很简单,where函数,我们必须限制结果并把它放在.first。然后我们可以像往常一样得到object值found.title
在 else
分支中你这样说:
arr = found.to_a.to_json
to_json
returns一个String
。然后你说:
puts arr.title
但是没有 String#title
方法,所以你得到一个 NoMethodError
。也许你的意思是:
puts found.title
还有,你真的想说 found.to_a.to_json
而不是 found.to_json
吗? to_a
调用只是将 found
包装在单个元素数组中。