Используйте public_send
, если вы хотите динамически вывести имя метода и вызвать его, но все же не хотите иметь проблемы с инкапсуляцией.
user = User.first
user.public_send(:first_name=, 'Ray')
Возможно, send
также будет работать в приведенном выше коде, но не рекомендуется в большинстве случаев.
User.first.public_send(:first_name=, 'Ray')
будет бесполезным, так как вы присваиваете значение объекту User
, и этот метод установки не сохраняет значение.
Ваш объект не хранится ни в одной ссылке, поэтому вы потеряете объект, для которого вы выполнили операцию setter
для first_name
.
Возьмите его в переменную, как user & amp; затем выполните такие операции, чтобы у вас был трек, чтобы позже вы могли сохранить объект user , а также посмотреть, какие изменения вы внесли в эту переменную
Выяснил гораздо более простой метод.
User.first [: first_name] = "Джон"