У меня есть приложение на Rails 3, над которым я работаю. У меня есть 3 модели: пользователь, место и рейтинг.
User.rb:
# attributes:
# name, email => String
class User < ActiveRecord::Base
has_many :ratings
has_many :venues, :through => :ratings, :uniq => true
...
end
Venue.rb:
# attributes:
# name, address, city, state, zip, neighborhood => String
# latitude, longitude => Float
class Venue < ActiveRecord::Base
has_many :ratings
has_many :users
...
def average_rating
sum = 0
self.ratings.each do |rating|
sum += rating.value
end
sum.to_f / self.number_of_ratings.to_f
end
def number_of_ratings
self.ratings.count
end
end
Rating.rb:
# attributes:
# venue_id, user_id => Integer
# value => String
class Rating < ActiveRecord::Base
belongs_to :user
belongs_to :venue
...
end
Мне нужно, чтобы все объекты были сгруппированы по районам с указанием названия района, среднего рейтинга для всех объектов в группе соседей, общего количества оценок для всех объектов в группе соседей, средней широты всех объектов. в группе соседей и средняя долгота всех мест в группе соседей.
Я не совсем уверен, как туда добраться, используя ActiveRecord и Postgres, какие-либо предложения?