加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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 =
> state =设置state_id

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

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

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读