뷰에 표시 할 데이터를 얻기 위해 컨트롤러에 다음이 있습니다.
@orders = Order.select{|order| [email protected]}.select{|order| order.clip_status==true}.select{|order| order.dc>0}.select{|order| ((Time.now.to_date..(CustomVideo.find_by_order_id(order.id).created_at.to_date+30.days)).count-1)<0}
이제 만든 날짜에 따라 주문해야합니다.
다음을 시도했지만 오류가 발생했습니다.
@orders = Order.select{|order| [email protected]}.select{|order| order.clip_status==true}.select{|order| order.dc>0}.select{|order| ((Time.now.to_date..(CustomVideo.find_by_order_id(order.id).created_at.to_date+30.days)).count-1)<0}.order('created_at DESC')
그리고 오류가 발생합니다. 이 문제를 어떻게 해결합니까?
undefined method `order' for []:Array
귀하의 문제는 오용에서 비롯됩니다 select
- ActiveRecord::Relation
일반적인 배열 인 것처럼 select를 사용하고 실제로는 범위에 Array
응답하지 않는 인스턴스를 반환하는 방식으로 선택하십시오 ActiveRecord
. where
가능한 경우 사용 select
하고 Array
모든 AR 범위가 적용된 후 다음 과 같이 블록 (을 반환 함 ) 과 함께 사용하는 것이 좋습니다 .
@orders = Order.where('your conditions').order('created_at DESC').select { |order| order.dc > 0 }
BTW, 실제로 다음 select
과 같이 last 도 where
(훨씬 더 효율적) 으로 대체 할 수 있습니다 .
Order.where('dc > ?', 0)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다