не работает gem activerecord-пользовательская метка

#ruby-on-rails-4 #activerecord #rubygems

#ruby-on-rails-4 #activerecord #rubygems

Вопрос:

Я пытаюсь обновить rails 3.x до 4.2.x. И я пытаюсь заменить userstamp gem на activerecord-userstamp, чтобы сохранить идентификаторы создателя и программы обновления.

Я выполнил все шаги, предоставленные activerecord-userstamp gem в github, и правильно настроил gem

    ActiveRecord::Userstamp.configure do |config|
     # config.default_stamper = 'User'
     # config.creator_attribute = :creator_id
     # config.updater_attribute = :updater_id
     config.deleter_attribute = nil
   end
  

После того, как я сбросил базу данных и выполнил миграции

но все еще моя схема не обновилась до creator_id,updater_id

       t.integer  "created_by", limit: 4
      t.integer  "updated_by", limit: 4
  

В моей модели user.rb

      class User < ActiveRecord::Base
      model_stamper
     end
  

в моих коллекциях.rb

       class Collection < ActiveRecord::Base
       stampable
      end
  

Когда я пытаюсь сохранить creator_id и обновленный идентификатор, он не сохраняется в базе данных

 | created_id | updated_id |
 ---- -------- ----------- -
|  NULL      |       NULL |
  

Может ли кто-нибудь помочь с вашими решениями

Ответ №1:

Activerecord-userstamp не удалось загрузить MigrationHelper во время выполнения миграции. Я решил эту проблему, добавив помощник по миграции в свой репозиторий и используя этот вспомогательный метод в моем файле миграции.

помощник /activerecorduserstamp.rb

 module activeRecorduserstamp

  module ActiveRecord::Userstamp::MigrationHelper
  extend ActiveSupport::Concern

   def userstamps(*args)
      config = ActiveRecord::Userstamp.config
      column(config.creator_attribute, :integer, *args)
      column(config.updater_attribute, :integer, *args)
      column(config.deleter_attribute, :integer, *args) if config.deleter_attribute.present?
   end
 end

  ActiveRecord::ConnectionAdapters::TableDefinition.class_eval do
    include ActiveRecord::Userstamp::MigrationHelper
  end
end
  

В моем файле миграции я включил этот вспомогательный метод как

db /migration/гггг.rd

 include activeRecorduserstamp
class YYY < ActiveRecord::Migration
    def change
      change_table :YYY do |t|
      t.userstamps
    end
  

После добавления вспомогательного метода в мой файл миграции.Activerecord-Userstamp работает отлично.

Обратитесь к проблеме с github