Мы используем базу данных MS- SQL с gem tiny_tds
в качестве адаптера базы данных.
У нас был класс Document
с таблицей documents
. Затем мы ввели новый класс ClientDocument
, унаследованный от Document
, и поделились таблицей БД.
class Document < ApplicationRecord; end
class ClientDocument < Document; end
Мы решили переехать ClientDocument
в свою собственную таблицу, поэтому мы просто создали миграцию и изменили наследование ClientDocument
.
class ClientDocument < ApplicationRecord; end
Если я сейчас сделаю запрос к базе данных ClientDocument
, я получу ошибка, , однако , если я создаю новую базу данных, заполняю ее, она отлично работает как нужно. MS- SQL как-то кеширует свои таблицы?
Это вывод из консоли, если я запрашиваю старую базу данных, которая «запоминает» 1 таблицу для 2 классов.
[13] pry(main)> ClientDocument.first
ClientDocument Load (3.6ms) EXEC sp_executesql N'SELECT [client_documents].* FROM [client_documents] ORDER BY [client_documents].[id] ASC OFFSET 0 ROWS FETCH NEXT @0 ROWS ONLY', N'@0 int', @0 = 1 [["LIMIT", nil]]
ActiveRecord::StatementInvalid: TinyTds::Error: Invalid object name 'client_documents'.: EXEC sp_executesql N'SELECT [client_documents].* FROM [client_documents] ORDER BY [client_documents].[id] ASC OFFSET 0 ROWS FETCH NEXT @0 ROWS ONLY', N'@0 int', @0 = 1
from /Users/user/.rvm/gems/ruby-2.6.5/gems/activerecord-sqlserver-adapter-5.2.0/lib/active_record/connection_adapters/sqlserver/database_statements.rb:405:in `each'
Caused by TinyTds::Error: Invalid object name 'client_documents'.
from /Users/user/.rvm/gems/ruby-2.6.5/gems/activerecord-sqlserver-adapter-5.2.0/lib/active_record/connection_adapters/sqlserver/database_statements.rb:405:in `each'
```