Ruby на Rails MS SQL TinyTds :: Ошибка: неверное имя объекта после создания таблицы - PullRequest
1 голос
/ 31 января 2020

Мы используем базу данных 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'
```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...