【问题标题】:Is there any easy way to validate the presence of a HABTM relationship?是否有任何简单的方法来验证 HABTM 关系的存在?
【发布时间】:2014-01-16 17:15:31
【问题描述】:

我正在开发一个 Rails 项目,它有两个模型,业务和用户,以及它们之间的 HABTM 关系。我想在业务模型中添加一个验证器,以便在没有至少一个用户的情况下无法创建或更新业务。

有人告诉我在业务模型中使用validate :users, :presence => true,但这不适用于关联,只能用于 db 列。是否有一个简单的验证器?

编辑

我的错,原来我有一个错字。 validate :users, :presence => true 完全适用于关联。我之所以选择第一个答案,是因为 Phillip 的链接帮助我意识到了这一点,我将把这个问题留给别人,以防其他人犯同样的愚蠢错误。

【问题讨论】:

  • 奇怪的首字母缩写词是“拥有并属于许多人”
  • 我只说 HABTM,因为 Rails 中的“多对多”可以指 HABTM 或 Has-Many-Through,我希望尽可能具体。

标签: ruby-on-rails validation model ruby-on-rails-4 associations


【解决方案1】:

查看validates_associated。文档说“验证关联的一个或多个对象是否都有效。适用于任何类型的关联。”

http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_associated

【讨论】:

    【解决方案2】:

    你可以这样做:

    class Business < ActiveRecord::Base
      validate :some_method
    
      def some_method
        # return true to validate true, return false to validate false
      end
    end
    

    虽然这可能不是内置方式,但它确实为您提供了很大的灵活性,让您可以根据自己的需要来验证模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      相关资源
      最近更新 更多