【问题标题】:Validations and Relations responsabilities for models features模型特征的验证和关系责任
【发布时间】:2018-02-09 14:05:08
【问题描述】:
 class Project < ApplicationRecord
   has_one :description
 end

 class Description < ApplicationRecord
   belongs_to :project
 end
  • 参考描述迁移/模型。

此时,如果没有附加项目,我无法在数据库中保存描述。 但是我可以创建一个没有描述的项目。

在我的情况下,如果项目没有描述,我想禁止创建它。

我认为有两种方法:

首先是在Description类中添加一个“has_one :project”,在Project中添加一个“belongs_to :description” 第二个是在项目中进行验证,例如“验证:描述,存在:真”

我不确定我应该更喜欢什么。第一个选项对我来说似乎很乱,我已经设置了模型之间的关系,所以如果我为相同的两个模型再添加一个,我觉得它太多了。

而且我不确定这是验证责任(如果没有描述,则禁止创建项目),还是数据库/关系责任。因为正如我所说,仅使用 ActiveRecord 我无法在没有项目的情况下创建描述,是不是有点像验证?

无论如何,我猜我对第二选择的“验证”是错误的。

【问题讨论】:

    标签: ruby-on-rails validation activerecord


    【解决方案1】:

    根据 Rails 文档,这应该需要 Description 才能创建 Project

    class Project < ApplicationRecord
       has_one :description, required: true
     end
    

    可以在页面下方大约 2/3 处找到它。搜索required

    http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多