Rails - сфера и вопрос fin_by_sql - PullRequest
0 голосов
/ 22 июля 2011

Учитывая мои три модели здесь:

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

  }

Вопрос в том, чтов моем контроллере я не могу заставить это работать.Я пробовал 2 вещи:

@variable = Classroom.result

@variable = Classroom.find_by_sql(:result)

Первый вариант кажется, что запрос работает, но я не могу получить результаты.Второй вариант отключает мой сервер.Любая идея о том, как мне этого добиться?

Заранее спасибо.

1 Ответ

0 голосов
/ 22 июля 2011

Вы не можете передать блок внутри вашего второго варианта. для этого нужно написать SQL-запрос.

@variable = Classroom.find_by_sql("Your query goes here..!!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...