如何使我的 belongs_to 字段成为可选字段?

How do I make my belongs_to field optional?

我正在使用 Rails 5.0.0。我有这个型号

class Scenario < ApplicationRecord
  belongs_to :grading_rubric
  has_many :confidential_memo
end

但是当我为模型调用我的创建方法时,它失败了

  def create
    @scenario = Scenario.new(scenario_params)
    respond_to do |format|
      if @scenario.save
        puts "saved successfully."
        format.html { redirect_to confidential_memo_path(@scenario), notice: 'Saved successfully.' }
      else
        puts "full messages: #{@scenario.errors.full_messages}"
        format.html { render action: "show" }
      end
    end
  end

我得到的错误是

full messages: ["Grading rubric must exist"]

如何指示 belongs_to 参数应该是可选的(即允许为空)?

过去,您可以将值保留为 nil,Rails 非常满意。然而,这在 Rails 5 中发生了变化。

如果您希望 belongs_to 是可选的,您只需传递 optional: true:

belongs_to :grading_rubric, optional: true

您可以找到更多相关信息here