gpt4 book ai didi

ruby-on-rails - rails 4 before_validation on : :create or on: :save

转载 作者:行者123 更新时间:2023-12-03 08:36:14 25 4
gpt4 key购买 nike

我有一个案子正在绕着我的脑袋。

我有一个图像模型,我只想在上传时保存它。我还需要一些来自上传的信息来验证图像(如高度和宽度)。但我只希望在有人第一次尝试将图像保存文件时上传。

所以我认为最好的选择是拥有一个 before_validation ,但我希望它仅在保存时运行!

我的代码在这个要点上 https://gist.github.com/andreorvalho/b21204977d2b70fdef83

所以奇怪的部分是这个 on: :saveon: :create有非常奇怪的行为,或者至少不是我所期望的。

当我把它写成 on: :save如果我尝试做一个 image.save在测试中我可以看到我的 before_validation回调没有运行!

如果我把 on: :create在任何情况下都运行,如果我运行没有关系 image.save , image.createimage.valid?
所以我猜这要么不起作用,要么我误解了设置的目标。

附言我在创建时的验证,也发生在保存、创建或有效的每种情况下?

如果有人遇到同样的情况或知道为什么不应该像这样工作,请告诉我。

最佳答案

before_validation回调允许限制对象生命周期内的特定事件。

您可以使用以下语法:

before_validation :set_uuid, on: :create
before_validation :upload_to_system, on: [:create, :update]

这是 Rails 4.0 的此选项的文档, Rails 5.2Rails 6.0 .

关于ruby-on-rails - rails 4 before_validation on : :create or on: :save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392960/

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