1

我想获取 Google Custom Search API 结果并使用 Datamapper 将它们添加到数据库中。

我已经成功设置并手动将一些项目添加到数据库中,所以看起来一切设置正确。

我正在使用 HTTParty 调用返回 JSON 结果的 Google API。然后我想获取该 JSON 并将每个链接添加到数据库中。我正在尝试使用 .each 如下;

response["items"].each do |item|
    i=DMapperModel.create(city: "London", link: item["link"])
    puts i
    puts i.saved?
end

Response 是一个保存 HTTParty::response 的变量,“items”和“link”都是 HTTParty::response 的子集。

puts i成功放置正确的 DataMapper 资源(即<#DMapperModel city: 'London', link: 'example.com'>

puts i.saved?是检查是否i保存到数据库中,目前返回 false...

因此它已成功设置i为 DataMapper 资源,但由于某种原因没有将其保存到数据库中,任何人都可以看到我哪里出错了吗?

4

1 回答 1

0

自己解决了!

我将链接参数设置为字符串,DataMapper 将其设置为默认最大长度为 50 个字符。我尝试添加的所有链接都超过 50 个字符,因此保存失败。

通过将链接参数的最大长度设置为 2000 个字符解决了该问题;

class CityLink
    include DataMapper::Resource
    property :id, Serial
    property :city, String
    property :link, String, *length: 2000*
end

我从DataMapper 文档上的这个页面获取了 2000 个字符的长度,该页面用于 URI 参数类型和指向这个 SO question的链接。

一旦我设置了这个,上面的 .each 方法就奏效了。

于 2013-05-07T19:20:52.450 回答