`Model.to_a.each`给了我整个数组

Rod*_*uza -2 ruby ruby-on-rails

我有一张Status已播种的桌子.我想得到:

['Aberto', 'Pendente', 'Concluido', 'Fechado']
Run Code Online (Sandbox Code Playgroud)

当我输入:

Status.all.to_a.each { |u| u.nome }
Run Code Online (Sandbox Code Playgroud)

我明白了:

[#<Status id: 1, nome: "Aberto">, #<Status id: 2, nome: "Pendente">, #<Status id: 3, nome: "Concluido">, #<Status id: 4, nome: "Fechado">]
Run Code Online (Sandbox Code Playgroud)

谁能告诉我发生了什么?

ndn*_*kov 7

Array#each用于迭代,Array#map用于映射.在这里,您想将nome 映射 到每个状态.因此,只需使用:Array#map

Status.all.to_a.map { |u| u.nome }
Run Code Online (Sandbox Code Playgroud)

甚至更好,快捷方式:

Status.all.to_a.map(&:nome)
Run Code Online (Sandbox Code Playgroud)

  • @Pavan OP问:"谁能告诉我发生了什么?"* - 你的答案提供了一个解决方案/解决方法而没有回答这个问题. (2认同)

Pav*_*van 5

你可以使用采摘

Status.pluck(:nome) # => ['Aberto', 'Pendente', 'Concluido', 'Fechado']
Run Code Online (Sandbox Code Playgroud)