Default_scope в объединяемой таблице

У меня есть такая настройка модели:

class User
  has_many :items
  has_many :words, :through => :items
end

class Item
  belongs_to :user
  belongs_to :word

  default_scope where(:active => true)
end

class Words
  has_many :items
end

У меня проблема в том, что default_scope не применяется к следующей ассоциации:

 user.words

Вместо этого SQL:

SELECT `words`.* FROM `words` INNER JOIN `items` ON `words`.id = `items`.word_id WHERE ((`items`.user_id = 1)) AND ((`items.active = 1))

Я получаю этот SQL в журналах:

SELECT `words`.* FROM `words` INNER JOIN `items` ON `words`.id = `items`.word_id WHERE ((`items`.user_id = 1)) 

Я полагаю, это потому, что область действия по умолчанию работает для обычной модели и ее дочерней ассоциации, но не для таблиц соединения.

Что является правильным Rails способ заставить область таблицы соединений работать между ассоциациями без необходимости ее указывать? Существует ли она?

6
задан joeellis 28 March 2011 в 18:28
поделиться