目前我有这行代码:

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

这似乎不必要地冗长。
有没有一种方法可以只声明一次@organisation并从中获取所需的各种字段?

最佳答案

为了清楚起见,我把它分成了几行,但也可以是一行。

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

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

10-06 13:40