2016-10-24 2 views
2

4.2.x로 레일스 3.x를 업데이트하려고합니다. 생성자 및 업데이터 ID를 저장하기 위해 userstamp gem을 activerecord-userstamp로 바꾸려고합니다. 나는 데이터베이스를 재설정하고 마이그레이션activerecord-userstamp gem이 작동하지 않습니다.

하지만 여전히 내 스키마가 creator_id을 업데이트하지 않았습니다를 한 후

내가 모든 GitHub의에서 액티브 - userstamp 보석에 의해 제공되는 단계 및 구성 보석 제대로

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

을 따라

을 UPDATER_ID 내 모델 user.rb에서
 t.integer "created_by", limit: 4 
     t.integer "updated_by", limit: 4 

내 collections.rb

 class Collection < ActiveRecord::Base 
     stampable 
     end 

나는 그것이 데이터베이스에 저장하지 creator_id 업데이트 된 ID를 저장하려고

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

수있는 솔루션을 하나 개의 도움

답변

0

액티브 마이그레이션을 실행하는 동안 -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/이동로/yyy.rd

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

에 도우미 메서드를 추가 한 후 내 마이그레이션 파일 .Activerecord-Userstamp는 훌륭하게 작동합니다.

github issue

관련 문제