我有一个与另一个模型B有“has_many”关联的模型A.我有一个业务需求,插入到A需要至少1个关联的记录到B.是否有一个方法,我可以调用以确保这是真的,还是我需要编写自定义验证?Rails - 验证存在的关联?
89
A
回答
140
您可以使用validates_presence_of
http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates_presence_of
class A < ActiveRecord::Base
has_many :bs
validates_presence_of :bs
end
或只是validates
http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates
class A < ActiveRecord::Base
has_many :bs
validates :bs, :presence => true
end
但是有它的错误,如果你会使用accepts_nested_attributes_for
与:allow_destroy => true
:Nested models and parent validation。在这个主题中你可以找到解决方案。
6
您可以验证关联与validates_existence_of
(这是一个插件):
实施例从this blog entry片段:
class Tagging < ActiveRecord::Base
belongs_to :tag
belongs_to :taggable, :polymorphic => true
validates_existence_of :tag, :taggable
belongs_to :user
validates_existence_of :user, :allow_nil => true
end
备选地,可以使用validates_associated
。由于Faisal notes in the comments低于答案,validates_associated
通过运行关联的类验证来检查关联的对象是否有效。它确实不是检查存在。注意到一个无关联被认为是有效的也很重要。
14
--------轨道4 ------------
简单validates
presence
工作对我来说
class Profile < ActiveRecord::Base
belongs_to :user
validates :user, presence: true
end
class User < ActiveRecord::Base
has_one :profile
end
这样,Profile.create
现在将失败。我必须在保存profile
之前使用user.create_profile
或关联用户。
0
如果你想确保该组织是当前和保证是有效的,你还需要使用
class Transaction < ActiveRecord::Base
belongs_to :bank
validates_associated :bank
validates :bank, presence: true
end
相关问题
- 1. Rails:验证是否存在关联
- 2. Rails:验证关联并保存?
- 3. Rails:在has_many关联中验证parent_id的存在
- 4. 验证互斥关联的存在
- 5. 对has_many关联的Rails验证
- 6. Rails 4 ActiveRecord关联排除验证
- 7. Rails 5停止验证关联
- 8. rails activerecord保存有唯一性验证的关联模型
- 9. rails,如何在保存之前验证关联的记录是否存在?
- 10. 验证对象的关联
- 11. 验证ActiveRecord关联聚合?
- 12. factory_girl关联验证
- 13. 验证关联对象(延迟验证)
- 14. 验证依赖于在Rails中构建的关联
- 15. 禁用mongoid belongs_to的关联验证
- 16. 多态性关联验证?
- 17. 验证多对多关联
- 18. 验证关联对象
- 19. 验证多态关联
- 20. 在不保存的情况下验证habtm关联的长度
- 21. 如何验证基于Rails 3.2中的列的关联?
- 22. Ruby on Rails的 - 验证与关联的模型属性之
- 23. 如何验证mongoDB中关联对象的存在?
- 24. accep_nested_attributes_for儿童关联验证失败
- 25. 如何在has_many的情况下通过关联来验证关联记录的存在?
- 26. Rails验证has_many与集合中其他对象的关联
- 27. 验证Rails中多对多关联的唯一性
- 28. 跳过对rails中多态关联的验证
- 29. 从Rails 3中的现有数据库推断关联/验证
- 30. Rails 3 - 控制器中的关联验证?
'的has_many:bs' lulz – Archonic 2016-10-28 00:24:37