Получение «неопределенного метода« пароль »для # <User: 0x2b95caea8590>» с Authlogic - PullRequest
2 голосов
/ 23 февраля 2011

Я понимаю, что есть почти идентичный вопрос об этом здесь , но исправление там не решило мою проблему.

Мой Authlogic работает в моей среде разработки, но не в моей производственной среде.Ниже приведена ошибка, которую я получаю.

Started GET "/users/new" for 71.205.207.120 at Tue Feb 22 19:24:49 -0800 2011
  Processing by UsersController#new as HTML
Rendered users/_form.html.erb (19.3ms)
Rendered users/new.html.erb within layouts/application (21.6ms)
Completed   in 38ms

ActionView::Template::Error (undefined method `password' for #<User:0x2b95caea8590>):
    21:   </div>
    22:   <div class="field">
    23:     <%= f.label :password %><br />
    24:     <%= f.password_field :password %>
    25:   </div>
    26:   <div class="field">
    27:     <%= f.label :password_confirmation %><br />
  app/views/users/_form.html.erb:24:in `_app_views_users__form_html_erb___1397135998_23961177217120_1124190'
  app/views/users/_form.html.erb:1:in `_app_views_users__form_html_erb___1397135998_23961177217120_1124190'
  app/views/users/new.html.erb:3:in `_app_views_users_new_html_erb___1081160896_23961177226000_0'
  app/controllers/users_controller.rb:29:in `new'

Я не ошибся ни в одном из столбцов базы данных, я уже делаю acts_as_authentic и перезапустил свой сервер, поэтому я не уверенчто еще попробовать.Похоже, что это должно быть связано с моей базой данных, но структура моей базы данных идентична.

1 Ответ

1 голос
/ 24 марта 2011

Поле пароля базы данных (и / или поле соли) может не соответствовать ни одному из значений по умолчанию !!!

У меня уже была эта проблема дважды, и в обоих случаях она была сложной из-за двух вещей:

1) Сообщение «неопределенный метод« пароль »действительно (часто) означает, что поле пароля не найдено в базе данных с использованием значений по умолчанию.

2) Место для ДОБАВЛЕНИЯ поля вашей базы данных для пароля (или соли в этом отношении) НЕ находится где-либо в каталоге ваших приложений, оно находится в вашем каталоге ruby ​​gem, что-то вроде ~ / .gem / ruby ​​/ 1.8 / gems / authlogic -2.1.6 / lib / authlogic / acts_as_authentic!

Поле для изменения - password.rb. Добавьте свои имена полей в список, например, я добавил pd_hashed изменилось:

модуль Config # Имя поля crypted_password в базе данных. # # * По умолчанию:: crypted_password,: encrypted_password,: password_hash или: pw_hash # * Принимает: Символ def crypted_password_field (значение = ноль) rw_config (: crypted_password_field, значение, first_column_to_exist (nil,: pd_hashed,: crypted_password,: encrypted_password,: password_hash,: pw_hash)) конец

Сделайте то же самое для соляного поля.

Перезагрузите компьютер, и это может помочь.

...