请考虑以下代码:
我从datamapper接收一个对象,其中包含来自select:
的值user = User.first()
puts user.name
# John
puts user.surname
# Doe
puts user.age
# 42
在用户定义的数组中,我有一个显示这些值的订单
dataordering = ["age", "surname", "name"]
那么如何在我的数组中获取我的值?
dataordering.each do |sequence|
puts user.sequence
# this, of course, fails
end
我不想使用eval()。不。
也许甚至有更好的方法来存储值的排序?
答案 0 :(得分:1)
您可以通过以下方式从记录中选择值:
user_attributes = user.attributes
dataordering.each do |attribute|
puts user_attributes[attribute.to_sym]
end
或使用send
方法:
dataordering.each do |attribute|
puts user.send attribute.to_sym
end
作为订购解决方案,我可以为您提供以下代码:
dataordering.map { |attr| user.send attribute.to_sym }