Ruby on rails 将对象的Activerecord数组转换为逗号分隔字符串

Ruby on rails 将对象的Activerecord数组转换为逗号分隔字符串,ruby-on-rails,Ruby On Rails,假设我有一个名为“Fruit”的模型,一个查询将所有不同的水果名称返回给@Fruit: !!ruby/object:水果属性: 水果名称:橙色属性\u缓存:{} !!ruby/object:水果属性: 水果名称:苹果属性\u缓存:{} !!ruby/object:水果属性: 水果名称:桃子属性\u缓存:{} 我知道@fruit是一个由数组(activerecord对象)组成的数组。我试图将返回的水果名称转换成逗号分隔的字符串,例如:“橙色、苹果、桃子” 如果数组是由字符串或数字(而不是数组)

假设我有一个名为“Fruit”的模型,一个查询将所有不同的水果名称返回给@Fruit:

  • !!ruby/object:水果属性: 水果名称:橙色属性\u缓存:{}

  • !!ruby/object:水果属性: 水果名称:苹果属性\u缓存:{}

  • !!ruby/object:水果属性: 水果名称:桃子属性\u缓存:{}

我知道@fruit是一个由数组(activerecord对象)组成的数组。我试图将返回的水果名称转换成逗号分隔的字符串,例如:“橙色、苹果、桃子”

如果数组是由字符串或数字(而不是数组)组成的,我知道我可以使用mapw/.join(',')来实现这一点。我在引用数组中的数组(每个数组索引处数组的“fruit\u name”字段)所需的额外语法方面遇到了问题

我知道这是可行的,只是不知道如何作为一个动态迭代来实现:

@水果字符串=@fruit[0]。水果名称+,'+@fruit[1]。水果名称+,'+@fruit[2]。水果名称

@fruit_string = @fruit.map { |f| f.fruit_name }.join ','
现在,当一个块由一个没有参数的方法调用组成时,出于某种复杂的原因,您可以这样编写它

@fruit_string = @fruit.map(&:fruit_name).join ','


1.一元&运算符将过程转换为块,并将块转换为过程。如果操作数两者都不是,则它首先调用_proc(如果可以)。(是的,符号有一个to_proc。)它甚至比这更复杂,但这就是为什么它是对map的一个很好的简洁补充。

或者使用proc缩写:

@fruit_string = @fruit.map(&:fruit_name).join(',')

我会使用下面的速记版本