我已经通过其他问题计数,但情况是有点不同的位置:验证为Rails中的has_many关系
class User < ApplicationRecord
has_many :documents, as: :attachable
validate :validate_no_of_documents
private
def validate_no_of_documents
errors.add(:documents, "count shouldn't be more than 2") if self.documents.size > 2
end
end
class Document < ApplicationRecord
belongs_to :attachable, polymorphic: true
validates_associated :attachable
end
现在,考虑User.find(2)
已经有两个文件,这样做如下:
user.documents << Document.new(file: File.open('image.jpg', 'rb'))
这成功创建文档,并且不验证可连接:User
。该文件是在数据库中创建后,双方user
& Document.last
是无效的,但有什么用,他们已经已经创建。
我试图在运行时创建一个Document
对象,这可能会导致它,但为此,我在验证中使用size
而不是count
。
如果你把'如果self.documents.size> 2'为'如果self.documents.size> 1 ',它将停止为同一用户创建第三个文档。 user'在'document.rb':用户validate方法'Document'创建 – kiddorails
你试过把'validates_associated前触发? – Pavan
@Pavan'validates_associated:user'不会 '在'Document'工作多态性'附'。 'user'将会是未定义的。 – kiddorails