gpt4 book ai didi

ruby-on-rails - validates_related 不检查关联的存在

转载 作者:行者123 更新时间:2023-12-04 00:20:09 24 4
gpt4 key购买 nike

谁能弄清楚这里发生了什么?我能够让我的代码按照我想要的方式工作,但我无法弄清楚为什么 validates_related 没有按我预期的那样工作。这是我的代码片段:

class Flag < ActiveRecord::Base
belongs_to :user
belongs_to :post

# allow only one flag per post per user
validates_uniqueness_of :user_id, :scope => :post_id

validates :user_id, :post_id, :presence => true
validates_associated :user, :post

attr_accessible :user_id, :post_id
end

使用此代码,我无法保存 user_id == nil 的标志。我 可以 使用 user_id == 12345 保存标志(即某些 user_id 不在数据库中)。这是 validates_related API 规范所说的:

validates_associated(*attr_names)

Validates whether the associated object or objects are all valid themselves. Works with any kind of association.
...
NOTE: This validation will not fail if the association hasn’t been assigned. If you want to ensure that the association is both present and guaranteed to be valid, you also need to use validates_presence_of.



我能够通过使用它来获得所需的行为,而不是:
  validates :user, :post, :presence => true

我对 API 规范的理解是,validates_related 检查关联表以查看是否存在其 id 与 Flag 的外键匹配的行。如果外键非零 .任何人都可以对此提供任何见解吗?我是否误解了 validates_related 应该如何工作?

最佳答案

validates_associated只运行关联对象的类中指定的验证,它对外键不做任何事情。
validates :user_id, :presence=>true确保存在 user_id在您的旗帜记录中,仅此而已。
validates :user, :presence=>true用于关联本身并确保正确设置外键。

关于ruby-on-rails - validates_related 不检查关联的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5176510/

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