정규화 된 데이터베이스 스키마를 갖도록 시스템을 업데이트하고 있습니다. 현재 테이블에 사용자 이름을 텍스트로 저장하는 user
열이 있습니다. user_id
열과 users
테이블을 추가하고 some_build.user
사용자 모델을 반환하고 싶습니다. 지금까지 꽤 똑바로.열을 같은 이름의 다른 것으로 바꾸지 만 계속 채우십시오.
불행히도,이 코드베이스의 테스트는 당신이 바라는 것보다 철저하지 않습니다. 변경 사항을 되돌려야 할 경우 이전 user
열을 채우고 싶습니다. 나는 build.rb
이 퍼팅 시도 : Build#user
가 User
모델에서 지적 떠나있는 동안 나는, 그것은 user
열을 작성합니다 기대했다
alias_attribute :legacy_username, :user
before_save do
if changed_attributes.keys.include? 'user_id'
legacy_username = user.name
end
end
. 죄송 합니다만 legacy_username
은 user
열이 아니라 user
열 대신에 user
메서드의 별칭이됩니다. 즉 some_build.legacy_username
은 User
을 반환하며 before_save 후크는 실패합니다.
user
라고하는 모든 것을 유지하면서이 작업을 수행 할 수있는 방법이 있습니까? 이름을 바꿔야합니까?