所属关联使ActiveRecord验证失败

Lor*_*lor 0 activerecord ruby-on-rails ruby-on-rails-5

我正在使用Rails 5.0.0.1。下面的代码段是模型,

class Note < ApplicationRecord
  belongs_to :language
end

class Language < ApplicationRecord
  has_many :notes
end
Run Code Online (Sandbox Code Playgroud)

当我尝试在Rails控制台中创建笔记时,

Note.create!(content: '1234')
Run Code Online (Sandbox Code Playgroud)

它将产生以下错误,

ActiveRecord::RecordInvalid: Validation failed: Language must exist
Run Code Online (Sandbox Code Playgroud)

Lor*_*lor 5

在Rails 5中,每当我们定义一个Emirates_to关联时,默认情况下都需要显示关联记录

在Rails 4中

required在Rails 4中默认用于belongs_to关联false

class Note < ApplicationRecord
  belongs_to :language, required: false
end
Run Code Online (Sandbox Code Playgroud)

在Rails 5中

要使其行为像在Rails 4中一样

class Note < ApplicationRecord
  belongs_to :language, optional: true
end
Run Code Online (Sandbox Code Playgroud)

在Rails 5中,不赞成使用required选项,belongs_to而推荐使用optional。(请参见Rails Github PRbelongs_to默认情况下需要”)

optional:true跨整个应用程序

Rails.application.config.active_record.belongs_to_required_by_default = false
Run Code Online (Sandbox Code Playgroud)

您还可以阅读“ Rails 5使belongs_to关联默认必需”以获取更多详细信息。