Ruby:如何根据类名获取类,如何根据字段名称获取对象的字段?

时间:2010-12-12 13:39:34

标签: ruby

问题1

如何将类命名为字符串?

例如,假设Product类有do_something方法:

str = "product"
<what should be here based on str?>.do_something

问题2

如何在字段名称为字符串的情况下获取对象的字段?

例如,假设Product类有price字段:

str = "price"
product = Product.new
product.<what should be here based on str?> = 1200

2 个答案:

答案 0 :(得分:5)

雅各布对第一个问题的回答假设您使用的是Rails并且如果您正常工作将会正常工作。如果您不是,您可以致电Kernel::const_get(str)按名称查找现有常量。

send是纯粹的红宝石。没有必要使用send实习你的字符串(将它们转换为符号),直字符串工作正常。

答案 1 :(得分:4)

  1. 使用capitalizeconstantize

    str.capitalize.constantize.do_something
    
  2. 使用send

    product.send(str + '=', 1200)