2017-12-06 1 views
0

clients이라는 테이블이 AR 모델 Client으로 백업되어 있습니다. 나는 종이 흔적 보석을 사용하여에 버전을 추가 한종이 흔적 보석으로 인해 이름 버전의 필드를 사용할 수 없습니다.

clients 
    - id <serial primary key> 
    - name <varchar(255)> 
    - version <varchar(255)> 

:이 clients 테이블의 구조입니다. 그러나 레코드를 업데이트하거나 만들 때 version 열은 업데이트되지 않습니다. 그리고 내가 할 때 Client.first.version 그것은 nil 값을 제공합니다. 테이블의 모든 레코드에 NULL이 없거나 비어 있지 않은 version 열이 있습니다. 나는 이것이 종이 흔적 보석으로 인한 것 같아. 내 프로젝트의 브랜치를 보석을 사용하지 않는 버전으로 전환 할 때 버전의 가치가 무제한 일 수 있습니다.

이 문제를 해결할 수있는 해결 방법이 있습니까?

답변

1

물론 있습니다. 문제는 paper_trail에 연관 이름이 version is the default이므로 속성을 가져 오는 대신 클라이언트에서 연결을 호출하는 것입니다. 당신은 귀하의 모델을 변경할 수 있습니다

class Client < ActiveRecord::Base 
    has_paper_trail version: :paper_version, versions: :paper_versions 
end 

c = Client.first 
c.version #=> row field 
c.paper_versions #=> previous versions. 

편집 : 그냥도 여기 paper_trail에 설명되어 있음을 발견 -이 그것을 https://github.com/airblade/paper_trail#6-extensibility

+0

입니다! 그러나 새로운 이름은 상징적으로 표시되어야합니다 :'has_paper_trail version :: paper_version, versions :: paper_versions' – hyde

+0

. 나는 심볼을 사용하는 대답을 업데이트했다. – kiddorails

관련 문제