Ruby on rails 如何使用Rails 3 activerecord编写此sql查询?

Ruby on rails 如何使用Rails 3 activerecord编写此sql查询?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我试图使用Rails3ActiveRecord约定编写此查询 SELECT s.name, s.id FROM tripoli_schools_development.campus_programs cp JOIN tripoli_schools_development.career_categories cc ON cp.career_category_id = cc.id JOIN tripoli_schools_development.campuses c ON c.id =

我试图使用Rails3ActiveRecord约定编写此查询

SELECT s.name, s.id FROM tripoli_schools_development.campus_programs cp 
  JOIN tripoli_schools_development.career_categories cc ON cp.career_category_id = cc.id 
  JOIN tripoli_schools_development.campuses c ON c.id = cp.campus_id 
  JOIN tripoli_schools_development.schools s ON s.id = c.school_id 
 WHERE cp.enabled = true and c.enabled = true and s.enabled = true and cc.id = 2 
 group by s.id order by s.name
以下是我的模型:

class CampusProgram < TripoliSchool
  belongs_to :career_category
  belongs_to :campus
end

class CareerCategory < TripoliSchool
  has_many :career_programs
  has_many :campus_programs
end

class Campus < TripoliSchool
  self.table_name = 'campuses'
  belongs_to :school
  has_many :campus_programs
end

class School < ActiveRecord::Base
  has_many :campuses, :class_name => "Campus"
  has_many :campus_programs, :through => :campuses
end
class CampusProgram“校园”
有许多:校园计划,:至=>:校园
结束
最重要的是

class TripoliSchool < ActiveRecord::Base
  self.abstract_class = true
  establish_connection "tripoli_schools_#{Rails.env}"
end
的黎波里学校
class
试试这个:

CompusProgram.select("shcools.name, shcools.id").joins([:career_categories, {:campuses => :schools}]).where("campus_programs.enabled = true and campuses.enabled = true and schools.enabled = true and career_categories.id = 2 ")

我不确定,但你已经知道了。你可以在这里看到文件:。

多亏了杜吉和安托尼亚尔贝托,这一切才奏效

CampusProgram.select("schools.name, schools.id").joins(:career_category).joins(:campus => :school).where("campus_programs.enabled = true and campuses.enabled = true and schools.enabled = true and career_categories.id = 2").group("schools.id").order("schools.name")
这同样有效

CampusProgram.select("schools.name, schools.id").joins([:career_category, {:campus => :school}]).where("campus_programs.enabled = true and campuses.enabled = true and schools.enabled = true and career_categories.id = 2").group("schools.id").order("schools.name")

我发现这有一个语法错误:校园=>{:schools}])。where(“校园计划:校园=>{:schools}似乎是错误所在。你能试试这个吗:加入(:职业分类)。加入(:校园=>{:schools})
:校园=>{:schools}
不正确,应该是
:校园=>:schools
对不起,这是我的错误。试试这个:加入([:职业分类,{:校园=>:schools}])谢谢你的帮助…你让我开始学习,下面是工作原理:CampusProgram.select(“schools.name,schools.id”).joins(:career\u category)。joins(:campus=>:school)。其中(“campus\u programs.enabled=true and campuses.enabled=true and schools.enabled=true and career\u categories.id=2”).group(“schools.id”).order(“学校名称”)