문제

나는 Has_many를 가지고 있습니다 : 관계를 통해 플레이어를 경영진을 통해 팀과 연결합니다.

나는 팀 테이블 (카운터 캐시와 비슷한)에 카운터를두고 싶다. 물론 카운터 캐시는 항상 만들어진 모든 연관성을 제공하기 때문에 작동하지 않습니다.

관리 모델 내에서 관련 팀을 업데이트하려고 시도했습니다. 이것은 결코 성공하지 못합니다. 관련 팀에 대한 증분이 정상으로 저장되는 것처럼 보이지만 협회가 생성 된 후에는 카운터가 여전히 0입니다.

또한 관찰자를 사용해 보았습니다. 관찰자는 내가 예상 한대로 전화를 걸었고, 팀을 검색 할 수 있었지만 다시 업데이트는 저장되지 않았습니다.

나는 분명한 것을 놓치고 있다고 확신한다! 이것을 구현하는 레일 방법은 무엇입니까?

문제를 설명하기 위해 github를 설정하면 레이크 사양을 실행하는 것이 실패합니다.

http://github.com/steveybaby/assoc_problem

도움이 되었습니까?

해결책

당신의 사양에서 :

FantEam_Spec.rb

it "should be able to create a fanteam" do
    @fanteam.save
    @fanteam.changes.should be(0)
    @fanteam.should be_valid
    @fanteam.players << Factory.build(:player)

    @fanteam.reload # this is what you are forgetting

    @fanteam.changes.should be(1)
  end

기본적으로 관찰자는 동일한 레코드를 업데이트하지만 동일한 객체는 아닙니다.

다른 팁

문제는 당신이 카운터 필드를 지명했다는 것입니다. changes, 마지막 저장 이후 레코드 속성의 변경 사항을 검사하기위한 ActiveRecord 메소드입니다. 해당 필드의 이름을 변경하고 코드가 작동하는지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top