Эй, Мне нужно использовать модель current_user для выполнения некоторых вычислений внутри функции. Внутри функции мне нужно сделать что-то вроде current_user.name = 'whatever', тем самым изменив текущее значение имени.Rails клон или хэш?
Однако, я хочу, чтобы это изменение было локальным, но выполнялось только внутри этой функции. Поскольку Rails использует объекты, это проблема. Поэтому я думаю, что лучше всего делать?
Возможно, клонировать current_user для нового объекта и использовать его внутри функции? Это кажется дорогим. Или, может быть, создать хэш из модели? И если я это сделаю, фактическая модель не будет изменена?
EDIT: Кажется, что хэш работает, но нет никакого типа, связанное с ним, так что если я сделать что-то вроде:
@attacker = current_user.attributes
затем, чтобы использовать его, я должен указать to_s как (иначе я получить нулевую ошибку по некоторым причинам):
@attacker [: имя] .to_s = 'то, что'
хмм, я Wouldn Не хотите создавать виртуальные атрибуты для всех возможных атрибутов моей модели, которые необходимо изменить. Разве вы не думаете, что это можно сделать с помощью хэшей? – Spyros
Это простая переменная. Так как вам нужно «выполнить некоторые вычисления внутри функции», и вы хотите, чтобы это изменение было локальным, а только внутри этой функции, было безопасно использовать переменную в рамках вашей функции. Вы можете вернуть эту переменную или позволить ей умереть внутри вашей функции по вашему усмотрению. Виртуального атрибута не требуется. – lbz
Вы правы, это тоже вариант, я также пробовал хэши, и теперь они работают нормально. Кажется, что переменное решение дешевле, хотя. – Spyros