Rails устанавливает значение динамического метода - PullRequest
0 голосов
/ 02 марта 2019

Я получаю сообщение об ошибке при попытке установить значение модели пользователя с помощью send.Какой правильный метод использовать?

SyntaxError ((irb): 22: синтаксическая ошибка, неожиданный '=', ожидаемый конец ввода)

User.first.send(:first_name)="John"

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Понял гораздо более простой метод.

User.first [: first_name] = "John"

0 голосов
/ 02 марта 2019

Используйте public_send, если вы хотите динамически вывести имя метода и вызвать его, но при этом все еще не хотите иметь проблемы с инкапсуляцией.

user = User.first
user.public_send(:first_name=, 'Ray')

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

User.first.public_send(:first_name=, 'Ray') будет бесполезным, так как вы присваиваете значение User объекту, и этот метод установки не сохраняет значение.
Ваш объект не сохраняется ни в одной ссылкетаким образом, вы потеряете объект, для которого вы выполнили операцию setter для first_name.

Возьмите его в переменную, например user , а затем выполните такие операции, чтобы вы могли отслеживать, так позжеВы можете сохранить объект user , а также посмотреть, какие изменения вы внесли в эту переменную

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