내가 (활동 모델에서 코드) 조상 모델의 모든 형제 자매의 부모를 변경하려고 지속 :레일 : 조상의 부모를 업데이트하지
def change_parents_of_siblings
to_change = self.siblings.where.not(id: self.id)
to_change.each do |sib|
sib.update!(parent: self)
end
end
나는 함수 내부의 모든 ID를 인쇄하는 경우 (같은 sib.id, ...) 그것이 작동하는 것 같습니다 콘솔. 그러나 함수 호출 후에 이러한 변경 사항 중 하나도 유지되지 않습니다. 예 :
@activity1 = Activity.create(name:"test1")
@activity2 = Activity.create(name:"test2", parent_id: @activity1.id)
@activity15 = Activity.create(name:"test1.5", parent_id: @activity1.id)
@activity15.change_parents_of_siblings
expect(@activity2.parent_id).to eq(@activity15.id)
이 실패합니다.
무엇이'self.siblings'입니까? 당신은'Activity'의 모든 형제들에 부모를 설정하려하지만,'Activity'의 parent_id가 바뀔 것으로 예상합니까? 그리고 관계에 대해 더 많이 말해 줄 수 있겠습니까? 어느 쪽이 다른 쪽과 다른쪽에 속해 있는지. –
질문은 조상 보석과 관련이 있습니다. 이 has_ancestry 액티비티는 parent와 parent_id와 같은 조상 관련 애트리뷰트와 루트, 아이, 형제, ... 같은 조상 인스턴스 메소드를 갖습니다. AR과 관련된 협회는 없습니다. – RicciFlowing