大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 使用Rails将外部JSON保存到DB,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
def show response = httparty.get('URI') user = JSON.parse(responsE) user.each {|line| puts line['user']['id']} #the "['user']['id']" is because of the nested JSON object that is returned after the parse. end
这会在我的rails控制台中返回正确的输出,但现在的问题是如何将[‘id’]保存到我的数据库中?
目前,我的用户模型有:id和:name;来自外部API的JSON对象发送:id和:name以及一些我不需要的其他信息.
class User < ActiveRecord::Base attr_accessor :id,:name end
任何帮助表示赞赏,谢谢!
获得该列后,在User模型中创建一个类方法(我称之为save_data_from_api)将JSON数据加载到db中:
class User < ActiveRecord::Base # optional,but probably a good idea validates :external_id,:uniqueness => true def self.save_data_from_api response = httparty.get('URI') user_data = JSON.parse(responsE) users = user_data.map do |line| u = User.new u.external_id = line['user']['id'] # set name value however you want to do that u.save u end users.SELEct(&:persisted?) end end
这是做什么的:
>将JSON数据映射到一个块(user_data.map),该块接受每个JSON用户和
>初始化新用户(User.new)
>为其分配id JSON数据(line [‘user’] [‘id’])
>保存新用户(u.savE),和
>返回它(块中的最后一个).
>然后,获取结果(分配给用户)并仅选择db中实际存在(被持久化)的那些(users.SELEct(&:persisted?)).例如,如果您对external_id有唯一性约束并且您尝试再次加载db数据,则u.save将返回false,不会(重新)创建记录,并且这些结果将从返回的结果中过滤掉从方法.
这可能是您想要的返回值,也可能不是.此外,您可能希望在块中添加更多属性分配(来自JSON数据的名称等).我留给你填写其他细节.
以上是大佬教程为你收集整理的ruby-on-rails – 使用Rails将外部JSON保存到DB全部内容,希望文章能够帮你解决ruby-on-rails – 使用Rails将外部JSON保存到DB所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。