Как обновить поле в базе данных из контроллера - PullRequest
0 голосов
/ 16 января 2020

У меня есть пользователь, который должен заполнить поле, не входя в систему. Это поле email_field. В базе данных есть два поля: электронная почта пользователя и user_id, user_id получает его от webhook, поэтому мне нужно обновить поле в моей базе данных после получения информации от webhook.

Вот мой контроллер для вставки данных в электронном письме моего пользователя в моей базе данных:

class EmailsController < ApplicationController
  def index
    redirect_to root_path
  end

  def new
    @email = Email.new
  end

  def create
    @email = Email.create(email_params)
    respond_to do |format|
      if@email.persisted?
        format.html {redirect_to invoice_index_path, notice: 'Email created '}
      else
        format.html{render :new}
      end
    end
  end

  private 

  def email_params
    params.require(:email).permit(:email, :id_user)
  end
end

Мой контроллер, откуда я получаю веб-крючок:

class InvoiceController < ApplicationController
def webhooks
    render status: 200

    user = Email.last
    #id_user that I need to fill in my database
    puts user.user_id.inspect
    #id_user receive from the webhook
    id_user = params.dig('connection', 'id_user')

    if user.user_id == nil
        #POST the id_user in my database
    end       
end

Вот мой вопрос, как я могу обновить файл с user.user_id с id_user?

Ответы [ 2 ]

0 голосов
/ 16 января 2020

Если добавить эту строку до того, как ваш оператор if заработает, он обновит и автоматически сохранит обновленную запись.

user.update_attribute(user_id, id_user)
0 голосов
/ 16 января 2020

И правильный ответ:

user.update_attribute :user_id, params.dig('connection', 'id_user')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...