Ruby on rails 多对象Rails上的依赖验证
我有三个ActiveRecord对象需要作为一个整体进行验证,我还不确定如何建模或实现它 下面列出了模型及其依赖项/验证(伪rails代码):Ruby on rails 多对象Rails上的依赖验证,ruby-on-rails,ruby,validation,activerecord,Ruby On Rails,Ruby,Validation,Activerecord,我有三个ActiveRecord对象需要作为一个整体进行验证,我还不确定如何建模或实现它 下面列出了模型及其依赖项/验证(伪rails代码): 营地 属于城市 城市 属于国家 在其状态中必须具有唯一的名称 陈述 有许多城市 更新营地记录时,在尝试更新营地记录之前,必须确保城市和州均有效。如果任何一步都失败了,我需要确保没有保存任何内容 我真的很想在这方面得到一些帮助 首先,营地不负责验证其所属的城市或州的有效性。最有可能的是,这些记录是在创建或更新营地时不会更改的现有记录 至于检
- 营地
- 属于城市
- 城市
- 属于国家
- 在其状态中必须具有唯一的名称
- 陈述
- 有许多城市
我真的很想在这方面得到一些帮助 首先,
营地
不负责验证其所属的城市
或州
的有效性。最有可能的是,这些记录是在创建或更新营地时不会更改的现有记录
至于检查关联是否已设置,使用Rails 5,任何所属的关联都将自动验证关联是否已设置以及记录是否存在。使用Rails 4,您只需在营地内为您的关联添加一个状态
验证:
belongs_to :city
validates :city, presence: true
要验证某个州内城市名称的唯一性,只需使用范围:
belongs_to :state
validates :name, uniqueness: {scope: :state_id}
对于其他所有内容,State
确实有责任确保它在创建或更新时有效。除非它的部分有效性来自它与之有关系的子对象集合?在这种情况下,您可以添加一个验证\u关联的验证
您可以在此处查看此验证的文档:
基本上,在您的状态
模型中,您将添加:
has_many :cities
validates_associated :cities
但这只会在更新/创建父对象时检查子对象是否有效,而不是在相反方向