为什么模型创建不起作用

时间:2013-03-06 19:42:36

标签: ruby-on-rails-3

我正在尝试在产品控制器中保存产品后创建事务日志。出于某种原因,当我尝试保存事务日志时出现错误。该产品正在成功保存。

代码:

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)

1 个答案:

答案 0 :(得分:4)

发现我的问题。我出于某种原因不得不刷新我的应用程序。

运行以下内容并且有效:

touch tmp/restart.txt

现在,如果我只能恢复这两小时的生活。 : - )