도시 모델과 비즈니스 모델이 있습니다. 비즈니스 belogs_to : 도시어린이가있는 모든 도시를 어떻게 찾을 수 있습니까?
이제는 자녀가있는 도시 목록 (이 경우 비즈니스)을 정의하고자합니다. 빈 도시 (비즈니스가 추가되지 않은 도시)는 고려되어서는 안됩니다. 가능한 경우 목록은 대부분의 비즈니스가있는 도시가 맨 위에 오도록 정렬해야합니다. 이것은 (정렬이 아직 완료되지 않음) 잘 작동하지만 지금까지 내가 레일 3.1 및 3.2에서 작동하지 않습니다이 이해로 (지금은 3.0을 사용)
@cities = City.find :all,
:joins => "INNER JOIN businesses ON businesses.city_id = cities.id",
:select => "cities.*, count(businesses.id) businesses_count",
:group => "businesses.city_id HAVING businesses_count > 0",
:order => "businesses_count desc"
:
는이 같은 해결책을 발견 . http://m.onkey.org/active-record-query-interface누구든지 내 @ cities를 레일 3.1 및 3.2에서 확인하는 방법을 어떻게 알 수 있습니까?
감사합니다.
@KandadaBoggu :
좋아요, 내가 아주 많이 답변 2 등), 감사!
그냥 코멘트 : 나는 레일 마이그레이션
마이그레이션 add_businesses_count_to_cities가 businesses_count 생성 : 정수 I 마이그레이션 편집하는 데 필요한 다음
:
class AddBusinessesCountToCities < ActiveRecord::Migration
def self.up
add_column :cities, :businesses_count, :integer, :default => 0
City.reset_column_information
City.all.each do |c|
c.update_attribute :businesses_count, c.businesses.count
end
end
def self.down
remove_column :cities, :businesses_count
end
end
이 기본 값을 설정하는 것이 중요합니다을 0을 입력 한 다음 도시를 현재 비즈니스 수로 업데이트하십시오. belongs_to :
는 또한 같은 아이 (사업)에 counter_cache을 추가 도시 : counter_cache =>
이 방법은 사실은 잘 작동합니다. 정렬없이