我正在写一个rails函数,它可以将Car或Building对象添加到City对象。使用字符串输入引用方法或属性
该功能的第一部分是创建具有给定名称的汽车或建筑物对象,然后将其附加到城市的汽车或建筑物列表中。
def addObject(obj_type,obj_name,city_id)
new_obj = obj_type.constantize.create(:name => obj_name)
city = City.find(city_id)
city.obj_type.underscore.pluralize << new_obj
end
随着Inflector
,程序可以使用constantize
引用期望的模型类。
(感谢Referencing Model with String input)
如:
new_obj = obj_type.constantize.create(:name => obj_name)
但是,试图访问City
物体内部的名单,
obj_type.underscore.pluralize
可以把 “汽车” 到“汽车时, “
然而,它只会像第E按照行不通:
city.obj_type.underscore.pluralize #city.cars desired
将某种类型的元编程功能,如eval()
需要?
谢谢你在前进,
你见过'变形器#tableize'? – Eric 2012-03-08 08:59:11
似乎与'Inflector#underscore'和'Inflector#pluralize'一起做同样的事情。感谢您指出它! – rickypai 2012-03-08 10:15:08