class Project < ApplicationRecord
has_one :description
end
class Description < ApplicationRecord
belongs_to :project
end
此时,如果没有附加项目,我无法在DB中保存描述。 但我可以创建一个没有描述的项目。
在我的情况下,如果项目没有描述,我想禁止创建项目。
我认为有两种方法可以做到:
第一个是在Description类中添加“has_one:project”,在Project中添加“belongs_to:description” 第二个是在Project中进行验证,例如“validates:description,presence:true”
我不确定我应该选择什么。第一个选项对我来说似乎很混乱,我已经在模型之间建立了关系,所以如果我为相同的两个模型添加一个,我觉得它太多了。
我不确定它是否是验证责任(如果没有描述则禁止项目创建),或者它是否是数据库/关系责任。因为正如我所说,只是使用ActiveRecord我无法在没有项目的情况下创建描述,是不是有点像验证?
无论如何,我猜我的第二选择“验证”是错误的。
答案 0 :(得分:0)
根据Rails文档,这应该需要Description
来创建Project
:
class Project < ApplicationRecord
has_one :description, required: true
end
可以在页面下方的2/3处找到它。搜索required
。
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html