ruby-on-rails – 什么时候应该验证ActiveRecord关联对象与其ID
发布时间:2020-12-16 22:55:19 所属栏目:百科 来源:网络整理
导读:假设我有一个ActiveRecord关联,如: class City ActiveRecord::Base belongs_to :stateend 没有国家的城市应该是无效的.似乎这两个都是可能的验证: validates :state,presence: true# ORvalidates :state_id,presence: true 我猜他们是一样的,因为: belong
假设我有一个ActiveRecord关联,如:
class City < ActiveRecord::Base belongs_to :state end 没有国家的城市应该是无效的.似乎这两个都是可能的验证: validates :state,presence: true # OR validates :state_id,presence: true 我猜他们是一样的,因为: > belongs_to创建方法state和state = 但是,我刚刚修改了一个失败的规范,通过改变它来检查id而不是对象. 这两种验证方式是否可以接受?如果是这样,你什么时候使用一个或另一个? 解决方法
验证:状态将使用从城市到州(belongs_to)与外键的关系,而验证:state_id将只使用列state_id,看是否有任何值.
我的首选方法是验证状态(关系),因为这需要密钥和关系存在. 验证state_id将起作用,因为它将确保状态id存在,但是它不会检查代码的有效性,也就是说,City中的任何给定状态键的状态实际上都“存在”. 基本上如果在City中使用的外键(对于state_id)全部作为状态的实际记录存在,效果是一样的.如果状态中有一个无效的状态代码,差异将会显示出来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |