Передайте переменную в метод info_for_paper_trail - PullRequest
1 голос
/ 12 июня 2019

В версии таблицы я создал новый столбец «localip». В поле зрения у меня есть скрытое поле, в которое я ставлю значение через JS:

<%= f.hidden_field :localIP, :value => params[:localIP] %>

Если я правильно понимаю, paper_trail вызывается первым, поэтому я вставляю в свой контроллер:

  prepend_before_action :set_localip, only: :update   

  def info_for_paper_trail
     { 
       :ip => request.remote_ip, 
       :agent => request.user_agent,
       :localip => @localip
      }
  end

private
    def set_localip
       @localip = params[:localIP] 
    end

но при обновлении: localip не передается:

PaperTrail::Version Create (0.3ms) INSERT INTO "versions" ("item_type", "item_id", "event", "whodunnit", "object", "created_at", "object_changes", "ip", "agent") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)

Кто-нибудь знает, как передать такое значение?

1 Ответ

0 голосов
/ 26 июня 2019

РЕШИТЬ:

в контроллере:

  prepend_before_action :set_localip, only: :update   
  before_action :set_paper_trail_whodunnit, if: :user_signed_in?

  def info_for_paper_trail
     { 
       :ip => request.remote_ip, 
       :agent => request.user_agent,
       :localip => @localip
      }
  end#

private
    def set_localip
       @localip = params.require(:commission)[:localIP]
    end

/ конфигурации / Инициализаторы / paper_trail.rb

module PaperTrail
  class Version < ::ActiveRecord::Base
     belongs_to :user, foreign_key: :whodunnit
  end
end
...