如何将ActiveRecord结果数组转换为普通数组?

时间:2010-11-22 00:09:35

标签: ruby-on-rails ruby

如何将@ recipe.components.find([#< Component ingredient_id:1>,#< Component> ingredient_id:2>])的结果集转换为[1,2]等数组

<% @ingredients.each do |ingredient| %>
  <div class="field">
  <%= check_box_tag 'ingredients[]', ingredient.id, @recipe.components.find(:all, :select => "ingredient_id").include?(ingredient.id) %><%= ingredient.name %>
  </div>
<% end %>

谢谢!

4 个答案:

答案 0 :(得分:31)

你可以使用

@result.map {|i| i.ingredient_id }

答案 1 :(得分:24)

如果您使用的是最新版本的ruby,则有新方法:

@result.map(&:ingredient_id)

节省时间,清洁且易于理解。

答案 2 :(得分:6)

或者更简洁@result.map! &:ingredient_id

答案 3 :(得分:6)

你也可以使用:

@result.pluck(:ingredient_id)