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 に答える