通过Ruby中的数字键值访问哈希值

时间:2014-01-22 15:38:07

标签: ruby-on-rails ruby hash

我有以下哈希:

{"_invite_email"=>"N/A", "xLsBD4LTAA_0"=>"Strongly Disagree", "xLsBD4LTAA_1"=>"Disagree", "xLsBD4LTAA_2"=>"Neutral", "survey_url"=>"http://fluidsurveys.com/surveys/marketing/charlotte-test-survey/", "_referrer"=>"http://fluidsurveys.com/surveys/marketing/charlotte-test-survey/", "JgmcuQm9XG"=>"None", "KtAT6FnCr2"=>"7", "16KXF8q2yh"=>"test_3", "survey_name"=>"Charlotte Test Survey", "_created_at"=>"2014-01-22 15:29:47", "_completed"=>"1", "D1VVmPRdIX"=>"No", "_username"=>"marketing", "_updated_at"=>"2014-01-22 15:30:06.838809", "_weighted_score"=>"34.0", "webhook"=>"event", "_pagepath"=>"6", "_language"=>"en", "GKXQAtqZeF"=>"test_2", "_extra_info"=>"weighted_score", "_invite_name"=>"N/A", "smR1irNIZl"=>"Wesley Chapel", "_locale"=>"298", "_id"=>"39384911", "qa6ekIlFr9_1"=>"test_number", "qa6ekIlFr9_0"=>"test_name", "_key"=>"743cb089d8fdba18fd80cce1dba677ccd7d20def", "_ip_address"=>"66.135.11.22", "_completion_time"=>"00:00:19", "zqZaH7fml2"=>"test_1"}

我需要创建一个非常丑陋的模型,其具有如下属性:

model.q1
model.q2
model.q3
etc...

以上哈希作为webhook中的params回复给我。我需要构建我的模型,将我的散列中的每个值存储在上面的模型属性中。这就是这个想法:

model.q1 = params[0]
model.q2 = params[1]
model.q3 = params[2]

编写该文件的最佳方法是什么,以便我可以访问每个单独的键/值对并将其存储在我的模型中?

修改

这是我的目标,我在这里100%愿意接受改进建议。

我正在接收上面从webhook发回给我的params。实际参数是调查回复的内容。我需要实时做出这些回复,因为我将根据回复率或我收到的回复数量在中间做出决定。我还需要查看回复的内容,而不仅仅是计数。

我遇到的问题是我收到了大约50份调查的回复。所有调查都是相同的,但是帖子参数包括每个问题的唯一标识符(如上所示)。我无法访问这些标识符,我无法知道它们是什么(除非我通过所有50个调查并将其写下来)。因此,由于调查在顺序/问题类型上是相同的,我计划根据发送给我的参数的时间顺序将数据存储在表中。这样每个调查都会映射到相应的列,我可以对此运行SQL查询来进行分析。

1 个答案:

答案 0 :(得分:1)

一种解决方案是使用参数键和模型属性的哈希值。

attr_map = {"_invite_email" => "q1", "xLsBD4LTAA_0" => "q1"}

然后你可以做

attr_map.each {|k, v| model[v] = params[k] }