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_associated(*attr_names)
Validates whether the associated object or objects are all valid themselves. Works with any kind of association.
…
NOTE: This validation will not fail if the association hasn’t been assigned. If you want to ensure that the association is both present and guaranteed to be valid,you also need to use validates_presence_of.
相反,我能够使用这个方法来获得所需的行为:
validates :user,:post,:presence => true
我对API规范的理解是,validates_associated检查关联的表,以查看是否存在与外部键匹配的id匹配的行,只要外键不为零.任何人都可以提供任何见解吗?我误解了验证关联应该如何工作?
解决方法
验证:user_id,:presence => true确保在您的标志记录中存在user_id,但这就是全部.
验证:user,:presence => true用于关联本身,并确保外键正确设置.
原文地址:https://www.jb51.cc/ruby/272359.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。