2011-07-22 8 views
0

ここで私の3つのモデルを考える:レール - スコープと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 

私はclassroom modelに必要なクエリを作るためにscopeを作成しました:

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 ") 

    } 

疑問が私の中にいることですコントローラ私はこれを動作させることはできません。私は2つのことを試みました:

@variable = Classroom.result 

@variable = Classroom.find_by_sql(:result) 

最初のオプションはクエリのように動作しますが、結果を取得できません。 2番目のオプションは私のサーバーをシャットダウンします。どのように私はこれを達成することができますか?

ありがとうございます。

答えて

0

2番目のオプションの内側にブロックを渡すことはできません。そのためには、SQLクエリを記述する必要があります。

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

こんにちは。答えをありがとう。このクエリをコントローラから取り出してモデルに入れることはできません。 scopなど何とか使うことはできませんか? –

関連する問題