編集:お詫び、おそらくこれは明確ではありませんでした。問題はなっていないplayer
属性に対応するためのオブジェクトを-私は返すようにしたい名前属性(例えば、のuid
、external_uid
、name
、birth_date
メッセージ文字列、いない値で、など)。
私はいくつかのテストをリファクタリングしようとしていますが、次のようなメソッドがあります。
def assert_frozen(player)
assert_predicate player.uid, :frozen?, 'uid is not frozen'
assert_predicate player.profile.external_uid, :frozen?,
'external_uid is not frozen'
# etc, etc, for all of the attributes
end
私はこれに似たものを作りたいです:
def assert_frozen_attribute(player_attribute)
assert_predicate player.player_attribute, :frozen?, 'PLAYER_ATTRIBUTE is not frozen'
# if the uid were not frozen, this should return "uid is not frozen"
end
属性の名前を補間する方法はありますか?
あなたが使用することができますObject#public_send
:
assert_predicate player.public_send(player_attribute), :frozen?, "#{player_attribute} is not frozen"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加