find_or_create_by()上出现500内部服务器错误

时间:2014-05-03 09:04:25

标签: ruby-on-rails activerecord ruby-on-rails-4

我已经使用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(用户)不返回对象。

我做错了什么?

1 个答案:

答案 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