Как получить значение из вычисляемой функции Postgres при создании объекта в Rails - PullRequest
0 голосов
/ 25 января 2019

Несколько месяцев назад я задал вопрос о том, как увеличить значение поля в алфавитном порядке перед созданием.

После нескольких комментариев мы пришли к очень хорошему решению В настоящее время у меня есть требование расширить это решение, вернуть объект и отобразить его на той же странице после создания.Мне нужен Ajax для этого.

В настоящее время проблема заключается в том, что я понятия не имею, как прикрепить созданный код_установки к объекту JSON, который возвращается при создании.

Я пробовал следующее:

before_validation :find_setup_code, on: :create

def find_setup_code
  self.reload
end

def exposure_setup_code
  self.setup_code
end

def as_json(options)
  super(methods: %i[exposure_setup_code])
end

Идея состоит в том, чтобы иметь возможность иметь доступ к data.exposure_setup_code сразу после создания объекта, не имеяперезагрузить страницу.

Как правильно подойти к этому?

1 Ответ

0 голосов
/ 25 января 2019

Решение, на которое вы ссылаетесь, использует функцию PostgreSQL для предоставления значения по умолчанию для рассматриваемого столбца.Это означает, что по умолчанию применяется во время SQL INSERT, который создает экземпляр вашей модели в базе данных;это происходит после проверки ActiveRecord, поэтому before_validation слишком рано, вы хотите перезагрузить модель сразу же после ее создания.

Я думаю, что вы хотите сказать:

after_create :reload # Make sure to load database-generated defaults.
...