사용자 모델이 has_many :comments
이고 의견 모델이 belongs_to :user
입니다.belongs_to 모델 after_save 업데이트
내가 을 설정하기 위해 comment.ratings
을 수집하려고하는데, 나는이 모델에 after_save
메소드를 가지고있다. 그러나 이것은 결코 부르지 않습니다. 여기
def update_user_rating
user = User.find(self.is_about)
user.trip_rating = (Comment.find_all_by_is_about(self.is_about).collect { |comment| comment.rating }.sum)/
Comment.find_all_by_is_about(self.is_about).count
end
내가 루비 코드를 확인하고 콘솔에서 작동, 그래서이 아니 루비 코드를 가정합니다.
예 모델에는 after_save : update_user_rating도 있습니다.
내가 뭘 잘못하고 있는지 이해하려고합니까?
편집 : 디버거를 기반으로 user.trip_rating =의 첫 번째 부분은 절대로 실행되지 않습니다. 의미는 그 라인에 next
을하려고했지만 그 라인이 문제라고 가정하고 있으므로 결코 통과하지 못했습니다. 레일을 다시 확인하면서 콘솔이 작동한다는 것을 알았습니다. 이해가 안돼!
솔브레드 : 다음은 내가 맘에 들지 않지만 문제를 해결 한 방법입니다. after_save 콜백을 제거하고 메서드를 사용자 모델에 추가하여 자체 등급을 계산하고 컨트롤러에서 호출했습니다.
user = User.find(self.user_id)
또는user = User.find_by_is_about(self.is_about)
를 사용해보십시오. 끝 부분에'user.save'를 입력하십시오. – Zippie나는 그것을 추가했지만 여전히 아무것도 변경되지 않았습니다. 고마워요. – eytanfb
당신은'user.save! '를 시도해 볼 수 있습니까? 저장하는데 문제가 있다면 오류가 있습니다. – Zippie