Rails - использование: include для поиска объектов на основе атрибутов их потомков - PullRequest
2 голосов
/ 19 апреля 2010

У меня есть модель предложения и исправления

class Sentence < ActiveRecord::Base
    has_one :correction

class Correction < ActiveRecord::Base
   belongs_to :sentence

и я пытаюсь найти все предложения, которые не имеют исправления. Чтобы сделать это, я просто ищу исправления, которых не существует, то есть чей id = nil. Но это терпит неудачу, и я не могу понять, почему

 Sentence.find :all, :include => :correction, :conditions => {:correction => {:id => nil}}

from (irb):4>> Sentence.find :all, :include => :correction, :conditions => {:correction => {:id => nil}}

ActiveRecord :: StatementInvalid: Mysql :: Ошибка: Неизвестный столбец 'corre.sentence_id' в 'выражении where': SELECT * FROM sentences WHERE (correction. sentence_id IS NULL)

Возможно, это синтаксис или просто общий подход. Кто-нибудь может помочь?

1 Ответ

3 голосов
/ 19 апреля 2010

Вы можете использовать это:

Sentence.all(:include => :correction, 
  :conditions => "corrections.sentence_id IS NULL")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...