我正在尝试使用以下属性在我的应用中创建一个简单的to_do模型:title:string,completed:boolean,completed_at:datetime,user_id:integer,project_id:integer。
class ToDo < ApplicationRecord
belongs_to :user
belongs_to :project
end
在创建页面上有一个表单,允许您提交新的to_do,并允许您从项目的下拉列表中选择要将其分配到的项目。这非常有效。
我还希望能够允许用户创建未分配给项目的to_dos,因此我将include_blank: true
添加到新to_do表单中的项目collection_select中,该表单将project_id提交到后端
当我使用空白project_id提交新的to_do时,我收到以下错误:
“项目必须存在”
如何在ToDo模型上允许nil project_id?
答案 0 :(得分:2)
这是Rails 5中的新行为,如this blog post中所述。在Rails 4及更早版本中,如果要确保存在belongs_to
关联,则必须使用验证明确说明。在Rails 5中,验证是自动的,除非您在模型中设置optional: true
标志。
您需要指定:project
关联是可选的,如下所示:
class ToDo < ApplicationRecord
belongs_to :user
belongs_to :project, optional: true
end