我已经用rails 4设置了一个简单的Web应用程序,并且正在为find_or_create_by苦苦挣扎。尽管手动执行查询时该条目位于我的SQLite数据库中,但它不会返回任何内容。
这是我的控制器中的代码:
login_as User.find_or_create_by(
:user_id => 20827
)
这是我的应用程序控制器:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_filter :login_from_session
def logged_in?
!!current_user
end
def current_user
@current_user
end
def login_as(user)
raise user
@current_user = user
session[:current_user_id] = user.try(:id)
end
def login_from_session
@current_user = User.find_by_id(session[:current_user_id])
end
end
这是网络服务器上的输出:
用户负载(0.2毫秒)选择“用户”。*从“用户”哪里“用户”。“ id”是NULL LIMIT 1
用户负载(0.1ms)选择“用户”。*从“用户”中,在“用户”中。“ id” = 20827 LIMIT 1
在7毫秒内完成500个内部服务器错误
TypeError(预期的异常类/对象):
app / controllers / application_controller.rb:18:在'raise'中
app / controllers / application_controller.rb:18:在`login_as'中
login_as()上的raise(user)不返回对象。
我究竟做错了什么?
TypeError(预期的异常类/对象):
app / controllers / application_controller.rb:18:在'raise'中
app / controllers / application_controller.rb:18:在`login_as'中
尝试raise @current_user.inspect
改用
def login_as(user)
raise @current_user.inspect
@current_user = user
session[:current_user_id] = user.try(:id)
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句