ActiveRecord ›Адаптер MySQL› Чувствительность к регистру

Я работаю с базой данных MySQL, в которой имена таблиц / полей, такие как «Пользователи», «Учреждения» и т. Д. Начинаются с заглавной буквы. Поскольку операционная система узла базы данных - Linux, идентификаторы (например, имена таблиц) обрабатываются с учетом регистра. Таким образом, если имя таблицы не используется заглавными буквами, это приведет к ошибке «Таблица не существует».

Проблема, которую я пытаюсь решить, заключается в том, что ActiveRecord всегда создает идентификаторы в нижнем регистре. Так, например, если использовать метод «find» для получения первой записи из таблицы Institution, результирующий SQL будет выглядеть так:

SELECT `institutions`.* FROM `institutions` LIMIT 1

Это, конечно, приводит к ошибке MySQL в среде Linux, потому что она не чувствительна к регистру.

Есть мысли о том, как можно обойти эту проблему?

Заранее спасибо!


person Andrew Kirk    schedule 27.09.2010    source источник


Ответы (2)


class Mouse < ActiveRecord::Base
  set_table_name "Meece"
end

Думаю, это должно вас прояснить.

person Chuck Vose    schedule 27.09.2010

Rails использует соглашение по конфигурации для определения имени таблицы из модели.

Но вы всегда можете настроить значение по умолчанию, чтобы оно соответствовало вашим устаревшим базам данных. Взгляните сюда:

http://book.opensourceproject.org.cn/lamp/ruby/railscook/opensource/0596527314/i_0596527314_chp_3_sect_20.html

и тут:

http://railsapi.com/doc/rails-v3.0.0/classes/ActiveRecord/Base.html#M001129

person hellvinz    schedule 27.09.2010
comment
Спасибо за эти ссылки! Это именно то, что я искал. - person Andrew Kirk; 28.09.2010