gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:18 25 4
gpt4 key购买 nike

假设我有一个像这样的 ActiveRecord 关联:

class City < ActiveRecord::Base
belongs_to :state
end

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

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

我猜它们是相同的,因为:

  • belongs_to 创建方法 statestate=
  • state= 设置state_id

但是,我刚刚修复了一个失败的规范,方法是将其更改为检查 id 而不是对象。

这两种验证方式都可以接受吗?如果是这样,您会在什么时候使用其中之一?

最佳答案

validates :state 将使用从城市到州的关系(belongs_to)以及外键,而 validates :state_id 单独使用列 state_id 并查看如果它有任何值(value)。

我的首选方法是验证 state(关系),因为这需要 key 和关系都存在。

验证 state_id 将起作用,因为它将确保状态 ID 存在,但是它不会检查代码的有效性,即对于 City 中任何给定的状态键,状态实际上“存在”。

基本上如果在City中使用的外键(对于state_id)都作为实际记录存在于State中,效果是一样的。如果您在 state 中有无效的状态代码,则会显示差异。

关于ruby-on-rails - 我应该什么时候验证 ActiveRecord 关联对象的存在与它的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11695262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com