2014-01-22 5 views
0

Итак, я передаю строку с именем класса модели activerecord в свой метод, и я хочу, чтобы иметь возможность вызвать некоторые методы в этом классе.Как получить класс ruby, когда его имя находится в переменной?

Это неправильно:

def perform(body_class, body_id) 
    body = body_class.constantize 
    request = body.find(body_id) 
end 

Update - это на самом деле работает отлично.

+1

Почему именно это неправильно? Это именно то, что вы сделали бы, если у вас есть ActiveSupport, и, поскольку вы отметили это с помощью Rails, это возможно. –

+0

Это должно сработать. Вы уверены, что 'body_class' является допустимым именем класса? – kddeisz

+0

О! Похоже, что у меня была неправильная капитализация в классе body_class, который я проходил. Теперь работает. Спасибо, парни! –

ответ

1

Какая ошибка вы получаете? Убедитесь, что строка находится в правильном формате ActiveRecord.

Например:

"Person".constantize # works 
"person".constantize # does not work 

Чтобы получить второй, чтобы работать, вы должны также добавить camelize

"person".camelize.constantize # works 
Смежные вопросы