0

考虑以下代码:

我从 datamapper 收到一个对象,其中包含我选择的值:

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

也许还有更好的方法来存储值的顺序?

4

1 回答 1

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 }
于 2012-05-29T12:17:38.913 回答