Задать вопрос
@Fly3110
web developer

Почему после переопределения получения поля из модели не работает его изменение?

Всем привет.

Есть модель. У нее есть поле options, типа json. В базе это поле может быть null.

Я хочу, чтобы в рельсах, если в базе это поле равно null, то мне бы все равно возвращался пустой Hash.
Написал вот такой метод (в модели)

def options
  self[:options] || {}
end


Но, после этого, не работает вот такая конструкция:
instance.options[:some_key] = some_value

прямое присваивание (instance.options = {some_key: some_value}) работает нормально.
При дебаге и вижу, что при присваивании ключа (которое не работает), выполнение заходит в мой переопределенный метод. Но ведь в нем идет просто получение значения. Не могу понять, как надо сделать, чтобы все работало :)
  • Вопрос задан
  • 130 просмотров
Подписаться 2 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Code Basics
    Ruby для начинающих
    1 месяц
    Далее
  • Хекслет
    Разработчик на Ruby on Rails
    5 месяцев
    Далее
  • Skillbox
    Ruby on Rails с нуля
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@evgeniy_trebin
Ruby on Rails developer
можно написать так
def options
  self[:options] ||= {}
end
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы