我正在尝试在产品控制器中保存产品后创建事务日志。出于某种原因,当我尝试保存事务日志时出现错误。该产品正在成功保存。
代码:
def create
@product = Product.new(params[:product])
respond_to do |format|
if @product.save
ProductTransaction.create(
:product_id => @product.id,
:user_id => current_user.id,
:message => "Product created"
)
format.html {
redirect_to product_path(@product.id),
:flash => { :success => "Product was successfully created." }
}
else
format.html { render action: "new" }
end
end
end
错误:
PGError: ERROR: column "product_id" is of type integer but expression is of type character varying at character 117
HINT: You will need to rewrite or cast the expression.
: INSERT INTO "product_transactions" ("created_at", "message", "product_id", "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5) RETURNING "id"
我不明白上面的错误。我仔细检查了我的表,product_id是一个整数。此外,我尝试编码一个数字,看看我是否可以让它保存。那没用。然后我从create函数中删除了所有参数,但仍然遇到了同样的错误。我甚至从头开始重新创建表格,结果相同。 ProductTransaction没有验证要求。我做错了什么?
代码(删除参数):
def create
@product = Product.new(params[:product])
respond_to do |format|
if @product.save
ProductTransaction.create()
format.html {
redirect_to product_path(@product.id),
:flash => { :success => "Product was successfully created." }
}
else
format.html { render action: "new" }
end
end
end
产品架构:
Product(id:integer, name:string, etc.)
产品交易模式:
ProductTransaction(id:integer, user_id:integer, product_id:integer, message:integer)
答案 0 :(得分:4)
发现我的问题。我出于某种原因不得不刷新我的应用程序。
运行以下内容并且有效:
touch tmp/restart.txt
现在,如果我只能恢复这两小时的生活。 : - )