Я обновил миграцию пользователя, изменив столбец "пользователь" на "имя пользователя", и теперь при запуске
User.find_by_id(session[:user_id])
сервер выводит
SQLite3::SQLException: no such column: user: SELECT "users".* FROM "users" WHERE "users"."id" IS NULL ORDER BY user LIMIT 1
Почему он все еще пытается упорядочить по "user "??
спасибо.
ОБНОВЛЕНИЕ:
вот таблица пользователя
create_table "users", :force => true do |t|
t.string "username", :null => false
t.string "avatar"
t.string "hashed_password", :null => false
t.string "salt", :null => false
t.string "mail", :null => false
t.integer "login_count", :default => 0
t.datetime "last_login", :default => '2011-06-23 08:59:41'
t.datetime "last_request_at", :default => '2011-06-23 08:59:41'
t.string "user_type", :default => "ruolo da definire"
t.integer "ammonizioni", :default => 0
t.integer "numero_segnalazioni_accettate", :default => 0
t.integer "numero_segnalazioni_risolte", :default => 0
t.datetime "created_at"
t.datetime "updated_at"
ОБНОВЛЕНИЕ 2: если это поможет ... Яиспользуя cancan, и ошибка возникает из-за метода «current_user» на контроллере приложения:
def current_user
@current_user = User.find_by_id(session[:user_id])
end
Решение проблемы обнаружило новое:
def User.authenticate(user, password)
if user = find_by_username(user)
if user.hashed_password == encrypt_password(password, user.salt)
user
end
end
end
Это работало хорошо, пока я не изменил миграцию.Ошибка для первой проблемы повторяется:
SQLite3::SQLException: no such column: user: SELECT "users".* FROM "users" WHERE "users"."username" IS NULL ORDER BY user LIMIT 1
Как мне изменить это?
if user = User.find_by_username(user)
Отвечая Майку:
- да
session[:user_id]
пусто, потому что я не вошел в систему - ваше решение для второй проблемы, произвестита же ошибка!