I'm running rails 2.3.10 on PostgreSQL. I have an issue where if I do a search on a database view with an :include directrive it does not load up the associated models as requested so I'm stuck with the old N +1 problem.
It works fine when dealing with a model from a proper DB table that includes another model:
BankStatement.all( :include => :bank_account, :limit => 10 )
produces the following in my log file:
SELECT * FROM "bank_statements" ORDER BY statement_date DESC SELECT * FROM "bank_accounts" WHERE ("bank_accounts"."id" IN (12,25,14,1,3,4))
as expected.
Now in the case where we have objects pulled in from a view (balace_sheet_transaction is a view that has a statement_account_id):
BalanceSheetTransaction.all( :include => :statement_account, :limit => 10 )
the following is in the log
SELECT * FROM "balance_sheet_transactions" LIMIT 10 SELECT * FROM "statement_accounts" WHERE ("statement_accounts"."id" = 285)
It only loads up the statement account of the first balance_sheet_transaction object. If I do an array map to the statement_account I will then see 10 lines in the log like SELECT * FROM "statement_accounts" WHERE ("statement_accounts"."id" = 285) where each ID is different.
Is there a limitation to using the :include with views? Is it PostgreSQL specific? Any other hints why :include is being ignored in the case?
Thanks in advance, Farrel