Как указать этот запрос с помощью Squeel? - PullRequest
1 голос
/ 15 июля 2011

Предположим, у меня есть модель:

class Question < ActiveRecord::Base   
   attr_accessible :title  # it has title attribute   
   has_many :pictures 
end

Я хочу определить scope запрос с именем completed, который:

Возвращает все вопросы, чьи:

  • заголовок не пустой ИЛИ
  • имеет хотя бы 1 изображение

Как я могу это сделать?

Пока что яесть:

class Question < ActiveRecord::Base   
   attr_accessible :title  # it has title attribute   
   has_many :pictures 

   scope :completed, where{title != ""}  # returns all questions with non-empty title
end

Было бы хорошо, если бы я мог просто сказать:

class Question < ActiveRecord::Base   
   attr_accessible :title  # it has title attribute   
   has_many :pictures 

   scope :completed, where{title != "" || pictures.count > 0}
end

1 Ответ

6 голосов
/ 19 июля 2011

Конечно, вы можете сделать это с Squeel! Просто напишите свою сферу так:

scope :completed, joins{pictures.outer}.where{(title != "") | (pictures.id != nil)}.group{id}

Надеюсь, я помог.

...