我正在使用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
答案 0 :(得分:4)
在Rails 5中,每当我们定义belongs_to关联时,都需要默认存在关联的记录
在Rails 4中
默认情况下,在Rails 4中,required
关联的{p> belongs_to
为false
。
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"了解更多详情。