0

Ist es eine Möglichkeit, diesen Hash nicht zu erstellen?Verschachtelte Attribute zu build_object zuweisen

{"0"=>{":comment_id"=>"52"}, "1"=>{":comment_id"=>"53"}, "2"=>{":comment_id"=>"15"}} 

Ausgang:

[{":comment_id"=>"52"}, {":comment_id"=>"53"}, {":comment_id"=>"15"}] 

So kann es durchführen:

@article = Article.new(article_params) 
@article.build_comments([{:comment_id=>"52"}, {:comment_id=>"53"}, {:comment_id=>"15"}]) 

@article.save 
+0

können Sie versuchen Sie bitte das folgende Codezeile. @ article.build_comments ([{": comment_id" => "52"}]). Build_entity –

+0

Die Frage ist nicht so klar – yossico

Antwort

3

Verwenden Sie einfach, object.values

object = {"0"=>{":comment_id"=>"52"}, "1"=>{":comment_id"=>"53"}, "2"=>{":comment_id"=>"15"}}

object.values

=> [{":comment_id"=>"52"}, {":comment_id"=>"53"}, {":comment_id"=>"15"}]

Um Schlüssel zu Symbolen konvertieren,

object.values.map { |x| x.class;x.inject({}){|memo,(k,v)| memo[k.gsub(':','').to_sym] = v; memo} }

o/p:

[{:comment_id=>"52"}, {:comment_id=>"53"}, {:comment_id=>"15"}]

+0

@ on-the-way, verwenden Sie einfach '.values' Methode. – Sravan

+0

Ist es ein Weg, um es als '[{: comment_id =>" 52 "}, {: comment_id =>" 53 "}, {: comment_id =>" 15 "}]' Doppel-Qoutes auf dem Schlüssel zu entfernen? –

+0

'object.values.map {| x | x.class; x.inject ({}) {| memo, (k, v) | memo [k.gsub (':', ''). to_sym] = v; Memo}} ' – Sravan

0

die Sie interessieren,

a = {"0"=>{":comment_id"=>"52"}, "1"=>{":comment_id"=>"53"}, "2"=>{":comment_id"=>"15"}} 
res = a.keys.map{|k,v| a.delete(k)} 

Hope this Ihnen helfen.

+0

ist das nicht effektiv eine Schleife? – David

+0

Kartenfunktion ist viel besser als Schleife. –

+0

es verwendet Iteration ... es ist eine Schleife .. was meinst du damit ist es besser als eine Schleife? – David

Verwandte Themen