次のようなモデルのセットアップがあります。
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の方法は何ですか? 存在しますか?