Ссылка на метод или свойство с вводом String - PullRequest
0 голосов
/ 08 марта 2012

Я пишу функцию rails, которая может добавить объект Car или Building к объекту City.

Первая часть функции - создать объект 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 для ссылки на нужный класс модели.

(спасибо Ссылка на модель со строковым вводом )

Например:

new_obj = obj_type.constantize.create(:name => obj_name)

Однако при попытке доступа к спискам внутри объекта City,

obj_type.underscore.pluralize

может превратить "Car" в "cars"

, однако, он будет работать только как пустая строка, так как не будет работать следующее:

city.obj_type.underscore.pluralize #city.cars desired

будет выполнять некоторые функции метапрограммирования, такие какeval() потребуется?

Заранее спасибо,

1 Ответ

2 голосов
/ 08 марта 2012

Вы можете сделать:

city.send(obj_type.underscore.pluralize) << new_obj

В этом случае вы создаете метод, который хотите вызвать в вашем городе, и используете его при отправке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...