2011-07-22 33 views
0

鑑於我的三個車型在這裏:導軌 - 適用範圍和fin_by_sql問題

class Classroom < ActiveRecord::Base 

    has_many :students 
    has_many :slideshows 
    has_many :grades 

class Slideshow < ActiveRecord::Base 

    belongs_to :classroom 
    has_many :grades 

class Grade < ActiveRecord::Base 
    belongs_to :slideshow 
    belongs_to :classroom 

我創建了一個scope,使我需要在classroom model查詢:

scope :result, lambda { 
    joins(:slideshows, :grades). 
    where("classrooms.id = slideshows.classroom_id AND slideshows.id = grades.slideshows_id "). 
    select("classroom.name, SUM (grades.english), SUM(grades.biology) "). 
    group("classroom.name "). 
    order("SUM(grades.english+grades.biology) DESC ") 

    } 

的問題是,在我的控制器我無法設法得到這個工作。我已經嘗試了兩件事:

@variable = Classroom.result 

@variable = Classroom.find_by_sql(:result) 

第一個選項看起來像查詢工作,但我無法檢索結果。第二個選項關閉了我的服務器。任何理想我該如何實現這一目標?

在此先感謝。

回答

0

您不能在第二個選項中傳遞塊。爲此你必須編寫SQL查詢。

@variable = Classroom.find_by_sql("Your query goes here..!!") 
+0

你好。感謝你的回答。我無法將此查詢從控制器中取出並放入模型中?不能使用scop或其他類似的東西? –