ruby-on-rails – 什么时候应该验证ActiveRecord关联对象与其ID的存在?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 什么时候应该验证ActiveRecord关联对象与其ID的存在?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个ActiveRecord关联,如:
class City < ActiveRecord::Base
  belongs_to :state
end

没有国家的城市应该是无效的.似乎这两个都是可能的验证:

validates :state,presence: true
# OR
validates :state_id,presence: true

我猜他们是一样的,因为:

> belongs_to创建方法state和state =
> state =设置state_id

但是,我刚刚修改了一个失败的规范,通过改变它来检查id而不是对象.

这两种验证方式是否可以接受?如果是这样,你什么时候使用一个或另一个?

解决方法

验证:状态将使用从城市到州(belongs_to)与外键的关系,而验证:state_id将只使用列state_id,看是否有任何值.

我的首选方法是验证状态(关系),因为这需要密钥和关系存在.

验证state_id将起作用,因为它将确保状态id存在,但是它不会检查代码的有效性,也就是说,City中的任何给定状态键的状态实际上都“存在”.

基本上如果在City中使用的外键(对于state_id)全部作为状态的实际记录存在,效果是一样的.如果状态中有一个无效的状态代码,差异将会显示出来.

猜你在找的Ruby相关文章