У меня есть модель, подобная следующей:
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 для того, чтобы заставить область таблицы соединений работать между ассоциациями, не указывая ее? Существует ли один?