Ruby on rails 在Rails中存储来自TwitterAPI的数据
在我开始之前,我仍然在学习整个MVC框架,所以请理解您的解释 我正在使用twittergem调用twitterapi。我正在收集我所有的追随者,并使用genderize.io ruby gem扩展返回他们的姓名和性别。我在我的索引视图中显示姓名和性别百分比,包括男性、女性、未知 我的最后一段代码返回分解为JSON对象的结果Ruby on rails 在Rails中存储来自TwitterAPI的数据,ruby-on-rails,ruby,twitter-gem,Ruby On Rails,Ruby,Twitter Gem,在我开始之前,我仍然在学习整个MVC框架,所以请理解您的解释 我正在使用twittergem调用twitterapi。我正在收集我所有的追随者,并使用genderize.io ruby gem扩展返回他们的姓名和性别。我在我的索引视图中显示姓名和性别百分比,包括男性、女性、未知 我的最后一段代码返回分解为JSON对象的结果 "{\"male\":{\"count\":59,\"percent\":0.46},\"female\":{\"count\":31,\"percent\":0.24},\
"{\"male\":{\"count\":59,\"percent\":0.46},\"female\":{\"count\":31,\"percent\":0.24},\"unknown gender\":{\"count\":38,\"percent\":0.3}}"
我的问题是如何重构这个长索引方法并将其分解,以便模型能够存储我从API和性别分解中得到的数据?换句话说,我需要存储ScreenName screen\u name、关注者列表@user\u name和性别百分比@gender\u percentage
如果有人知道如何开始分解这些数据以及将数据存储在哪里,请让我知道
我的代码显示在这里
class TwitterController < ApplicationController
require 'twitter'
require 'json'
def index
client = Twitter::REST::Client.new do |config|
config.consumer_key = '************'
config.consumer_secret = '************'
config.access_token = '************'
config.access_token_secret = '************'
end
screen_name = 'myscreenname'
follower_ids = client.follower_ids(screen_name)
user_name = []
follower_ids.each_slice(100) do |slice|
begin
client.users(slice).each do |user|
user_name << user.name
end
end
end
@user_name = user_name
c = user_name.map{|str| str.split.first}
gen = []
gir = GenderizeIoRb.new
c.each do |res|
begin
res = gir.info_for_name(res)
gen << "#{res[:result].gender}"
rescue
res = "GenderizeIoRb::Errors::NameNotFound"
gen << "uknown gender"
end
end
hash = Hash.new 0
gen.each do |mfg|
hash[mfg] += 1
end
count = hash.to_a
sum = 0
count.each { |_, v| sum += v }
gender_percentage = []
count.each do |k, v|
gender_percentage << [k, ((v.to_f / sum) * 100).round]
end
@gender_percentage = gender_percentage
total = count.map { |elt| elt[1] }.reduce { |x, y| x + y }
hsh = {}
count.each do |label, n|
hsh[label] = {}
hsh[label]['count'] = n
hsh[label]['percent'] = (n.to_f / total.to_f).round(2)
end
hsh.to_json
end
end
我有点搞不懂推特是怎么回事,你想输出什么?您可能希望使用JSON.parse方法。这将为您将JSON对象转换为普通的ruby数据类型。了解这一点,但我的问题是如何设置模型并重构它,以便模型存储数据类型。我已经得到了我想要的输出。