2015-02-08 2 views
0

Я хотел бы знать, как найти и использовать вспомогательный метод, когда у меня есть имя помощника в строковом формате.Как найти и использовать вспомогательный метод из String

Я пишу двигатель, и в файле инициализации, пользователи могут указать current_user_helper как таковой:

MyEngine.current_user_helper = "current_user" 

Я хотел бы сделать что-то с этим в контроллере. Например, приведенный ниже код пытается создать сообщение для зарегистрированного пользователя.

MyEngine.current_user_helper.posts.new(post_params) 

Тем не менее, этот код не работает, потому что MyEngine.current_user_helper является строкой. По-видимому, Rails выдаст ошибку при попытке:

MyEngine.current_user_helper = current_user 

без кавычек.

Любые предложения?

ответ

1

Вы можете использовать send для вызова метода из строки или символа. send доступен для всех потомков объекта.

send(MyEngine.current_user_helper).posts.new

+0

Это довольно пятно сверху. Что я называю 'send' on? Если я делаю это в контроллере, это сам контроллер, и это потомок «Объекта»? –

Смежные вопросы