[英]Rails: Unknown column in SELECT statement
我正在嘗試驗證用戶登錄 Rails 應用程序。 控制器代碼如下所示:
def create
user = User.where(params[:session][:email]).first
# user = User.where(:type=> 'User', :email => params[:session][:email])
debugger
if user and user.authenticate(params[:session][:password])
session[:user_id] = user.id
redirect_to admin_url
else
redirect_to login_url, alert: "Invalid user/password combination"
end
end
參數被正確傳遞,但它試圖在用戶表中搜索“用戶”屬性。 沒有用戶屬性。 users
表如下所示:
mysql> DESCRIBE users;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| userid | int(11) | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
| password | varchar(255) | YES | | NULL | |
| fname | varchar(255) | YES | | NULL | |
| lname | varchar(255) | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
在您的情況下,ActiveRecord 生成一個查詢,其中params[:session][:email]
是列名:
SELECT `users`.* FROM `users` WHERE (`<the value of params[:session][:email]>`)
您應該在where
提供列名:
user = User.where(email: params[:session][:email]).first
或者只是使用find_by
而不是where
+ first
:
user = User.find_by(email: params[:session][:email])
好吧,這條線有問題
user = User.where(params[:session][:email]).first
您想通過他的電子郵件地址搜索用戶,因此您必須像這樣指定(告訴活動記錄我要搜索該特定字段)
user = User.where(email: params[:session][:email]).first
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.