如果@ model.save引发错误,请使用Rails

Ala*_*man 2 ruby ruby-on-rails-4

我有一个消息模型。每当我if @message.save在控制器中运行时,都会出现此错误:

ERROR:  null value in column "conversation_id" violates not-null constraint
Run Code Online (Sandbox Code Playgroud)

如果保存失败,我只想重定向。

  def create
    @message = Message.new(message_params)
    if @message.save
      # redirect
    else
      # render new
    end
  end 
Run Code Online (Sandbox Code Playgroud)

我的消息架构

  create_table "messages", force: true do |t|
    t.string   "body",                                    null: false
    t.integer  "conversation_id",                         null: false
    t.datetime "created_at"
    t.datetime "updated_at"
  end
Run Code Online (Sandbox Code Playgroud)

Mic*_*ruz 5

我相信发生这种情况的原因是因为您的实际模型中没有验证,仅在数据库中。因此,它通过了验证以继续保存,但是数据库有问题。只需在模型中包含一个验证,它将返回false:

validates :conversation_id, presence: true
Run Code Online (Sandbox Code Playgroud)