有一个带有自动保存功能的 Rails 模型,我应该验证关联吗?
Posted
技术标签:
【中文标题】有一个带有自动保存功能的 Rails 模型,我应该验证关联吗?【英文标题】:Having a rails model with autosave, should I validate_associated? 【发布时间】:2015-07-17 06:48:07 【问题描述】:我有一个属于联系人的设备模型:
belongs_to :contact, autosave: true
validates_presence_of :contact
我添加了autosave
和validates_presence_of
,因为设备:
关于AutosaveAssociation,应该不需要添加这一行:
validates_associated :contact
因为:If validations for any of the associations fail, their error messages will be applied to the parent
但是,在这种情况下,我收到了以下结果:
> device.valid?
> => true
> device.contact.valid?
> => false
如果自动保存联系人为真而联系人无效,为什么设备有效?
注意:我没有找到关于如何使用 Mongo 自动保存的好的文档。这个问题基于Mongo。我找到了关于使用 ActiveRecord 自动保存的很好的文档,但我想了解它是如何与 mongo 一起工作的。
【问题讨论】:
【参考方案1】:我在这里发表了评论:https://jira.mongodb.org/browse/MONGOID-4132?focusedCommentId=1033059&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-1033059
您的验证未按预期工作的核心原因是您的架构规定 Device 是子项,而 Contact 是父项。您应该反转这种关系以获得您期望的行为。
【讨论】:
以上是关于有一个带有自动保存功能的 Rails 模型,我应该验证关联吗?的主要内容,如果未能解决你的问题,请参考以下文章
我应该如何在 Rails 中组织这个类似 Instapaper 的功能?
带有 MD5 摘要的 Rails 模型 before_save
带有 jquery datepicker 的 Ruby on rails