Как заставить Rails ActiveRecord использовать camelCase в запросах вместо snake_case

#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