Rails查询有很多关系

时间:2014-11-15 22:02:14

标签: ruby-on-rails

伙计们,我很难做出这个问题。 一项活动有一项运动,一项运动,两项都有很多活动。 我想要一个查询,根据在这些地方练习给定运动的次数来选择前10名。我在以下地址出错::activities.sport_id => @ sport.id),我不知道我该怎么做这部分,任何帮助都会受到赞赏!

class Activity < ActiveRecord::Base
  has_one :sport
  belongs_to :place

class Sport < ActiveRecord::Base
  has_many :activities, :class_name => "Activity", :foreign_key => "sport_id"
  has_many :places, through: :activities

class Place < ActiveRecord::Base
  has_many :activities, :class_name => "Activity", :foreign_key => "place_id"
  has_many :sports, through: :activities

def show
        @places = Place.where(:activities.sport_id =>  @sport.id).sort{ |a,b| b.activityfrequency(@sport.name) <=> a.activityfrequency(@sport.name)}.take(10)
  end

1 个答案:

答案 0 :(得分:4)

您必须使用如下所示的活动记录的加入功能。

Place.joins(:活动,:体育).order(:频率).limit(10)