Ruby on Rails изменяет имена таблиц для моделей

#ruby-on-rails

#ruby-on-rails

Вопрос:

Совершенно новичок в Rails, я читал, что он изменяет имена ваших таблиц, потому что делает кучу предположений, но я работаю с таблицами, которые были созданы до rails и используются в PHP API, поэтому я не могу их изменить.

У меня есть класс, созданный в Rails, который ссылается на существующую таблицу, и, конечно, я получаю sql-ошибку table not found, потому что он добавляет s в конце имени таблицы, поэтому я пошел дальше и добавил это в свое определение класса:

 class BookSubjects2title < ActiveRecord::Base
set_table_name "book_subjects2title"
belongs_to :bookSubjects
end
  

Предположительно, это должно решить проблему из того, что я прочитал. Тем не менее, это не так, он все еще продолжает пытаться использовать имя с s в конце, и я получаю сообщение об ошибке из консоли rails. Есть ли что-нибудь, что мне нужно сделать, чтобы Rails прочитал эту новую конфигурацию? Должно быть динамическим нет?

Комментарии:

1. Не уверен в этом, поэтому несколько комментариев: посмотрите config/application.rb и конфигурацию config.active_record.pluralize_table_names = false . Возможно, этого достаточно. Далее: belongs_to :bookSubjects должно быть: belongs_to :book_subjects .

2. Спасибо, я посмотрю, но принадлежит указывает имя таблицы или имя класса? Это то, чего я не понимаю. Я добавил ту строку конфигурации, которую вы написали в config/application.rb, и все то же самое. Кажется подозрительным, что это будет игнорировать все, нет? Но остальная часть приложения (такая, какая она есть), похоже, работает.

3. Ага, выход из консоли и повторный запуск, похоже, сделали свое дело. Теперь он правильно считывает таблицу. Большое спасибо. Если вы хотите продолжить и ответить на вопрос, я могу отдать вам должное за это (люди на этом форуме, похоже, ДЕЙСТВИТЕЛЬНО серьезно относятся к этому)…

Ответ №1:

Не уверен, что это ваша единственная проблема, но

 belongs_to :bookSubjects
  

никогда не должно быть ‘s’, используйте это вместо.

 belongs_to :book_subject
  

Комментарии:

1. это был вопрос, который я опубликовал выше в комментариях, belongs_to должен указывать на имя таблицы или имя класса?