我有一个小型的免费应用程序在heroku上运行。heroku目前的交易已中止
间歇性的应用程序停止工作,并在屏幕上显示默认的heroku错误页面。当我检查日志我看到以下内容:
在我的控制器ActiveRecord::StatementInvalid (PGError: ERROR: current transaction is aborted, commands ignored until end of transaction block : SELECT * FROM "users" WHERE ("users"."password" = E'' AND "users"."userid" = E'') LIMIT 1): app/models/user.rb:5:in
authenticate'
login'
app/controllers/admin_controller.rb:6:in
我只是做以下几点:
user = User.authenticate(params[:storeid], params[:password])
,并在用户模式:
def self.authenticate(userid, password)
user = self.find_by_userid_and_password(userid, password)
user
end
错误消息导致我相信有些关系是悬而未决的。这是一个在Ruby应用程序中的情况吗?
在我的应用程序中也有很多地方我使用find_by_sql。这是否要求我们明确关闭连接?
像这样:
@sqlstmmt1 = "INSERT INTO addresses (\"line1\", \"line2\", city, state, zip, county) VALUES ('" + params[:line1] + "', '"+ params[:line2] + "', '"+params[:city]+ "', '" + params[:state] + "', '" + params[:zip]+ "', '" + params[:county]+"')"
sql = ActiveRecord::Base.connection();
sql.begin_db_transaction