Модель пытается использовать другое имя таблицы в производстве, чем в разработке - PullRequest
2 голосов
/ 24 февраля 2011

У меня есть модель под названием User.У меня pluralize_table_names установлено значение false, поэтому таблица User использует user.(Это что-то вроде глотка!)

Интересно, что моя модель ведет себя правильно в разработке, но в работе User пытается использовать таблицу с именем users, которой не существует.Все остальные мои модели используют имена в единственном числе.Посмотрите на это:

$ rails console
Loading development environment (Rails 3.0.3)
irb(main):001:0> Client.table_name
=> "client"
irb(main):002:0> Appointment.table_name
=> "appointment"
irb(main):003:0> User.table_name
=> "user"
irb(main):004:0> 
$ rails console production
Loading production environment (Rails 3.0.3)
irb(main):001:0> Client.table_name
=> "client"
irb(main):002:0> Appointment.table_name
=> "appointment"
irb(main):003:0> User.table_name
=> "users"
irb(main):004:0>

Как видите, все хорошо, кроме User в производстве.Что дает?

Редактировать: вот код модели в производстве:

class User < ActiveRecord::Base
  acts_as_authentic
end

И в разработке:

class User < ActiveRecord::Base
  acts_as_authentic
end

Та же самая вещь.Я даже указал свой производственный экземпляр на ту же базу данных, что и разработка, и проблема не устранена.У меня возникли эти проблемы, когда я начал использовать Authlogic, поэтому я начинаю подозревать, что среда разработки каким-то образом знает о некоторых вещах Authlogic, которых нет в производственной среде.

Обновление: я пытался убить как можно большедвижущиеся части, насколько это возможно.Я настроил и свою производственную среду, и свою среду разработки так, чтобы они указывали на базу данных dev.Это ничего не изменило.Я изменил свою производственную среду на dev, и она начала работать.Я изменил свою среду разработки на производственную, и она перестала работать.Это говорит мне, что есть кое-что о переходе от dev к производству, что заставляет его перестать работать.Я понятия не имею, что, хотя.

1 Ответ

9 голосов
/ 24 февраля 2011

Я понял это.В итоге я сохранил единственное имя таблицы user в базе данных, но в моей модели я сделал это:

class User < ActiveRecord::Base
  set_table_name "user"
  acts_as_authentic
end

Директивы должны быть в таком порядке, иначе это не будет работать!Я не знаю, почему это так (на самом деле, если я немного об этом думаю, это имеет смысл), и я не знаю, почему я решил попытаться изменить порядок, но я рад, что сделал это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...