字符串到对象?

时间:2012-05-29 12:05:23

标签: ruby datamapper

请考虑以下代码:

我从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()。不。

也许甚至有更好的方法来存储值的排序?

1 个答案:

答案 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 }