属于关联使ActiveRecord验证失败

时间:2016-11-03 05:12:25

标签: ruby-on-rails activerecord ruby-on-rails-5

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

class Note < ApplicationRecord
  belongs_to :language
end

class Language < ApplicationRecord
  has_many :notes
end

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

Note.create!(content: '1234')

会产生以下错误,

ActiveRecord::RecordInvalid: Validation failed: Language must exist

1 个答案:

答案 0 :(得分:4)

  

在Rails 5中,每当我们定义belongs_to关联时,都需要默认存在关联的记录

在Rails 4中

默认情况下,在Rails 4中,required关联的{p> belongs_tofalse

class Note < ApplicationRecord
  belongs_to :language, required: false
end

在Rails 5中

使其行为类似于Rails 4,

class Note < ApplicationRecord
  belongs_to :language, optional: true
end

在Rails 5中,required的{​​{1}}选项已弃用,而不是belongs_to。 (请参阅Rails Github PR“默认情况下需要optional”)

在整个应用中制作belongs_to

optional:true

您还可以阅读"Rails 5 makes belongs_to association required by default"了解更多详情。