#sql #ruby-on-rails #activerecord #camelcasin& #snakecasin&
#sql #ruby-on-rails #activerecord #camelcasin& #snakecasin&
Вопрос:
Я пытаюсь создать приложение rails, которое будет подключаться к производственному SQLServer, используемому сторонним программным обеспечением, поэтому перенос базы данных не является вариантом.
Я могу подключиться к SQL server без каких-либо проблем (я использовал это руководство для подключения к существующей базе данных, а это для подключения rails к SQL Server), и я могу запрашивать таблицы, которые используют имена snake_case.
Таблицы, к которым мне нужен доступ, находятся в cameCase, и я не могу переименовать его, потому что стороннее программное обеспечение перестанет работать.
Я уже реализовал /confi&/environment.rb
ActiveRecord::Base.pluralize_table_names = false
чтобы удалить множественное число.
Например:
UserTable.count
ActiveRecord создает это: *SELECT COUNT(*) FROM [user_table]*
Я хочу, чтобы ActiveRecord создал это: SELECT COUNT(*) FROM [UserTable]
Какой файл мне изменить, чтобы указать правильное имя таблицы, которое он должен использовать?
Комментарии:
1. Вы могли бы заглянуть
self.table_name = 'UserTable'
внутрьUserTable
класса model и не беспокоиться оpluralize_table_names
настройках; затем используйтеalias_attribute
для обработки имен столбцов.
Ответ №1:
Я не думаю, что rails имеет какую-либо поддержку в соответствии с вашей спецификацией на базовом уровне. Поскольку rails верит в соглашение о конфигурации.
Хотя мы можем переопределить имя таблицы в вашей модели.
пользовательская таблица.rb
class UserTable < ApplicationRecord
self.table_name = "UserTable"
self.primary_key = "YourPrimaryKey"
end
Комментарии:
1. Следующий вопрос, если я сделаю это в консоли&&t; Пользовательская таблица.сначала я получаю это: Загрузка пользовательской таблицы (9,4 мс) EXEC sp_executesql N’SELECT [Пользовательская таблица].* ИЗ [пользовательской таблицы] СО СМЕЩЕНИЕМ 0 СТРОК ИЗВЛЕКАЮТСЯ СЛЕДУЮЩИЕ @ТОЛЬКО 0 СТРОК’, N’@0 int’, @0 = 1 [[«LIMIT», nil]] ActiveRecord::StatementInvalid: TinyTDS::Ошибка: неправильный синтаксис рядом с ‘0’.: EXEC sp_executesql Не ВЫБИРАЕТ [пользовательскую таблицу].* ИЗ [пользовательской таблицы] СО СМЕЩЕНИЕМ 0 СТРОК ИЗВЛЕКАЮТСЯ СЛЕДУЮЩИЕ @ТОЛЬКО 0 СТРОК’, N’@ 0 int’, @0 = 1 из (irb): 10 Есть идеи?
2. @User9123 могу я узнать, какое программное обеспечение для базы данных вы используете
3. @User9123 Я воспроизвел ваш вариант использования в post&resql, и он работает нормально. Я уверен, что это также будет работать в MySQL. Если вы используете любую базу данных, отличную от этой. Пожалуйста, отредактируйте свой вопрос с помощью кода вашей модели.
4. Я использую SQL Server 2012, я опубликовал больше информации здесь &ithub.com/rails-sqlserver/activerecord-sqlserver-adapter /…
5. готов компенсировать вам помощь Ravi. напишите мне: aet08 hotmail