Здесь я почесал голову ... Если я попробую следующее с рельсами:
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, который поддерживает только include.
Я не совсем уверен, что с этим происходитошибка.Я подозреваю, что это может быть связано с тем фактом, что это устаревшая база данных 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.