从同一对象访问大量字段的快捷方式(Ruby)

时间:2016-03-16 02:43:29

标签: ruby data-structures

目前我有这行代码:

[@organisation.name, @organisation.address, @organisation.city, @organisation.postcode, @organisation.country, @organisation.phone_number].join(', ')

似乎不必要地冗长。

有没有办法只说一次@organisation,并从中获取您想要的各个字段?

3 个答案:

答案 0 :(得分:2)

为了清楚起见,我把它分成了单独的行,但它可以是一行的。

fields = [:name, :address, :city, :postcode, :country, :phone_number]
values = fields.map { |field| @organisation.send(field) }
csv = values.join(', ')

send方法是你所追求的魔力。它发送'方法调用对象并返回该方法调用的结果。

答案 1 :(得分:1)

如果你使用Ruby 2.3,你可以试试这个:

@organisation.attributes.fetch_values("name", "address", "city", "postcode", "country", "phone_number").join(', ')

答案 2 :(得分:0)

正如答案所提到的那样,发送&#34;,你的问题不太清楚,但根据一种解释,instance_variables将是你正在寻找的魔力。< / p>