2011-04-24 2 views
1

에서 "가짜"열을 만들 수 있습니다레일 내가 가진 내 tabel에서 모델

rating_score => The current score 
ratings => The number of ratings which led to the score 

나는 모델이다 "가짜"열이라는 평가 (rating_score/등급)을 만들려고합니다. 내가 내 컨트롤러에서 사용하고 내보기에서 주문할 수 있습니다.

모델에서 어떻게 작성해야합니까?

+0

당신은 당신의 모델이 같은 방법을 정의한다 수행 할 수있는 계산 된 열'. – Zabba

답변

2

SQL 쿼리를 사용하여 결과를 가상 속성으로 정렬 할 수 없음을 유의하십시오.

def rating 
    rating_scope/ratings 
end 

과 값에 따라 루비에서 결과 집합을 주문 : : 그 일이 '계산 columns` 또는`라고

results.sort_by(&:rating) 
+0

값을 유지해야 할 필요가 있다면 (일반적으로) 값의 열을 만든 다음 모델의 'before_save' 필터에서 값을 계산합니다. – Zabba

+0

경우에 따라 등급 열이 0 인 경우가 있습니다. 문제가 있습니까? –

+0

@tzown : 0으로 나눌 수 없으므로 문제가 될 수 있습니다. 'rating' 메소드 내에서 해당 케이스 (및 다른 것들!)를 확인하고 필요에 따라 값을 반환하십시오 (예 :'ratings == 0? 0 : rating_scope/ratings'). –