임의의 항목을 선택하려는 레일스 모델이 있습니다.루비/레일의 배열에서 가중치를 적용한 무작위 선택
named_scope :random, lambda { { :order=>'RAND()', :limit => 1 } }
을하지만 지금은 각 행이 포착해야되는 확률을 나타내는 모델의 정수 필드 '무게'를 추가했습니다 : 지금까지이 같은 명명 된 범위와 함께 일을했습니다.
이제 어떻게 가중치 임의 선택을 수행 할 수 있습니까?
snippets.dzone.com에서 Array 클래스를 확장하고 가중치 임의 함수를 추가하는 두 가지 메소드를 찾아서 사용해 보았습니다. 그러나 둘 다 작동하지 않거나 임의 항목을 선택했습니다.
저는 REE 1.8.7과 Rails 2.3을 사용하고 있습니다.
에서 영감을 (진짜 시도하지). Ruby에서는 어렵지 않지만 DB에서 처리하는 것이 훨씬 효율적입니다. –
오, 예, mysql을 사용하는 것을 잊어 버렸습니다. 하지만 저는 루비에서 그것을 해결하는 데 너무 집중했습니다. 나는 쿼리 레벨에서 그것을 해결하는 것을 고려조차하지 않았습니다. – capsized