2011-10-26 83 views
0

抓我的頭在這裏...如果我嘗試用軌以下:Rails的錯誤:對象不支持#inspect

User.limit(25).includes([:addresses]) 

我得到:

User Load (109.5ms) EXEC sp_executesql N'SELECT TOP (25) [User].* FROM [User]' 
Address Load (112.3ms) EXEC sp_executesql N'SELECT [Address].* FROM [Address] WHERE [Address].[UserId] IN (N''1'', N''2'', N''3'', N''6'', N''7'', N''8'', N''9'', N''11'', N''12'', N''16'', N''17'', N''18'', N''19'', N''20'', N''21'', N''22'', N''24'', N''25'', N''26'', N''27'', N''28'', N''29'', N''30'', N''31'', N''34'')' 
(Object doesn't support #inspect) 
=> 

如果我不是做

@users = User.limit(25).joins([:addresses]) 

這工作正常,但內部連接不是我想不提及我實際上試圖通過sunspot_rails這樣做只支持包含。

我不完全確定這個錯誤是怎麼回事。我懷疑這可能是由於這是一個傳統的MSSQL數據庫,所以命名約定遠不如rails所喜歡的。然而,我對於具體問題是什麼感到不知所措。

的型號如下,精簡到驗證重現該問題的最小值:

class User < ActiveRecord::Base 
    set_table_name "User" 
    set_primary_key "ID" 

    has_many :addresses, :foreign_key => 'UserId' 
end 

class Address < ActiveRecord::Base 
    set_table_name "Address" 
    set_primary_key "ID" 
    belongs_to :user 
end 

這就是它。用戶模型中還有其他代碼用於搜索和身份驗證,但我已經評論全部並驗證它對此問題沒有影響。我堅持這一點,任何幫助表示讚賞。該應用程序正在使用rails 3.1,activerecord-sqlserver-adapter和tiny_tds。

回答

0

解決...

:foreign_key => 「用戶名」,而不是:foreign_key => 「用戶ID」

出於某種原因,情況差別似乎並不做非預先加載的時候來打擾軌道,或與.joins一起使用,但與.includes一起使用。衛生署。

相關問題