加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Activerecord对象数组,以逗号分隔的字符串

发布时间:2020-12-16 21:37:56 所属栏目:百科 来源:网络整理
导读:说我有一个名为“水果”的模型,并且查询将所有不同的水果名称返回给@fruit: !ruby/object:Fruit attributes: fruit_name: orange attributes_cache: {} !ruby/object:Fruit attributes: fruit_name: apple attributes_cache: {} !ruby/object:Fruit attribu
说我有一个名为“水果”的模型,并且查询将所有不同的水果名称返回给@fruit:
  • !ruby/object:Fruit attributes:
    fruit_name: orange attributes_cache: {}

  • !ruby/object:Fruit attributes:
    fruit_name: apple attributes_cache: {}

  • !ruby/object:Fruit attributes:
    fruit_name: peach attributes_cache: {}

我明白(有些)@fruit是一个由数组(activerecord对象)组成的数组.我试图将返回的水果名称变成一个逗号分隔的字符串,如:“橙,苹果,桃”.

如果数组由字符串或数字组成(而不是数组),我知道我可以使用地图w / .join(‘,’)来做到这一点.我遇到了引用数组中数组的额外语法(每个数组索引的数组的“fruit_name”字段)时遇到麻烦.

我知道这将工作,只是不知道如何做一个动态的迭代:

@fruit_string = @fruit [0] .fruit_name’,’@fruit [1] .fruit_name’,’@fruit [2] .fruit_name

解决方法

@fruit_string = @fruit.map { |f| f.fruit_name }.join ','

现在,当一个块由没有参数的方法调用组成,并且由于有些复杂的1个原因,你可以这样写

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

一元&运算符将进程转成块和块进入进程.如果操作数不是,那么它首先调用to_proc,如果可以的话. (是的,Symbol有一个to_proc.)它比这更复杂,但这就是为什么它是一个很好的pithy补充映射的原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读