ruby-on-rails – validates_associated不检查是否存在关联
任何人都可以弄清楚这里发生了什么?我能够让我的代码按照我想要的方式工作,但是我无法确定为什么validates_associated不能正常工作.以下是我的代码片段:
class Flag < ActiveRecord::Base belongs_to :user belongs_to :post # allow only one flag per post per user validates_uniqueness_of :user_id,:scope => :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 :user,:post,:presence => true 我对API规范的理解是,validates_associated检查关联的表,以查看是否存在与外部键匹配的id匹配的行,只要外键不为零.任何人都可以提供任何见解吗?我误解了验证关联应该如何工作? 解决方法
validates_associated只运行在关联对象的类中指定的验证,对外键不做任何操作.
验证:user_id,:presence => true确保在您的标志记录中存在user_id,但这就是全部. 验证:user,:presence => true用于关联本身,并确保外键正确设置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |