我已经使用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.2ms)SELECT“users”。* FROM“users”WHERE“users”。“id”IS NULL LIMIT 1
用户加载(0.1ms)SELECT“users”。* FROM“users”WHERE“users”。“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(用户)不返回对象。
我做错了什么?
答案 0 :(得分:1)
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