Я пишу функцию рельсов, которая может добавить объект «Город» или «Автомобиль» или «Строительство».Метод или свойство ссылки со строковым вводом
Первая часть функции - создать объект Car или Building с заданным именем, а затем добавить его в список автомобилей или зданий города.
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)
Eg:
new_obj = obj_type.constantize.create(:name => obj_name)
Однако при попытке получить доступ к спискам внутри City
объекта,
obj_type.underscore.pluralize
может превратить "Автомобиль" в «автомобили "
Однако он будет работать только как голая строка, так как е наблюдение не будет работать:
city.obj_type.underscore.pluralize #city.cars desired
потребуется какое-то метапрограммирования функции, такие как eval()
?
Спасибо заранее,
Вы видели 'инфлектор # tableize'? – Eric
Кажется, что делать то же самое, что и «Inflector # underscore» и 'Inflector # pluralize' вместе. Спасибо, что указали на это! – rickypai