Tag: validation关联

为Rails 3更好的validates_associated方法?

Rails 3包括在保存嵌套模型时自动调用的validates_associated 。 该方法的问题是消息很糟糕 – “模型无效” Rails 2中有一些post攻击了这个问题: http://rpheath.com/posts/412-a-better-validates-associated http://pivotallabs.com/users/nick/blog/articles/359-alias-method-chain-validates-associated-informative-error-message 而且可能还有更多。 如果这些post中描述的Rails 3兼容,那将是一个很好的版本。 主要的改进是包括相关模型失败的原因。

validates_associated不检查关联的存在

任何人都可以弄清楚这里发生了什么? 我能够以我想要的方式使我的代码工作,但我无法弄清楚为什么validates_associated不能按我的预期工作。 这是我的代码片段: class Flag :post_id validates :user_id, :post_id, :presence => true validates_associated :user, :post attr_accessible :user_id, :post_id end 使用此代码,我无法使用user_id == nil保存标志。 我可以使用user_id == 12345保存一个标志(即某些user_id不在数据库中)。 这就是validates_associated API规范所说的: validates_associated(* attr_names) validation关联的对象是否全部有效。 适用于任何类型的协会。 … 注意:如果尚未分配关联,则此validation不会失败。 如果要确保关联存在且保证有效,则还需要使用validates_presence_of。 我通过使用它来获得所需的行为,而不是: validates :user, :post, :presence => true 我对API规范的理解是validates_associated检查关联的表以查看是否存在一行,其id与Flag 的外键匹配, 前提是外键是非nil 。 任何人都可以对此提出任何见解吗? 我是否误解了validates_associated应该如何工作?