为什么嵌套属性的验证在创建时不起作用?

丁丁81

在我的 Rails 6 应用程序中,我有以下设置:

class Quote < ApplicationRecord

  has_many :service_items, :dependent => :destroy

  accepts_nested_attributes_for :service_items, :allow_destroy => true

  validate :no_more_than_two_currencies

  def currencies
    service_items.pluck(:currency).uniq
  end

private

  def no_more_than_two_currencies
    if currencies.length > 2
      errors.add(:base, "Only two currencies are allowed")
    end
  end

end

不幸的是,验证仅适用于update,不适用于create

出于某种原因,service_items.pluck(:currency).uniq在实际保存记录之前不返回任何货币。

如何解决这个问题?

眼花缭乱

service_items尚未添加到数据库中,因此pluck不会返回任何有用的东西。您可以使用 访问它map,它使用内存对象。

def currencies
  service_items.map(&:currency).uniq
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 first 和 last 属性时,为什么我的嵌套 IF 在 Smarty 中不起作用?

为什么BeanCopier在复制属性时不起作用?

为什么TextBox验证不起作用

使用 Google Invisible Captcha 时,自动 html 表单验证和 required 属性不起作用。为什么?

为什么BindNever属性不起作用

为什么转换属性不起作用

为什么`innerText` 属性不起作用?

为什么用于Devise身份验证的嵌套资源不起作用?

为什么单击“标题”时“按下”不起作用,但是单击“前导”属性时为什么起作用?

在容器上设置flex属性时,为什么flex属性不起作用?

嵌套在AnimatedBuilder()中时,为什么AnimatedSwitcher()不起作用?

为什么自定义输入验证和 setError() 在使用 useField() 时不起作用?

为什么在动态组件创建中进行属性绑定不起作用?

为什么嵌套的 for 循环在 Python 中不起作用?

为什么我的路由嵌套系统不起作用?

为什么我的嵌套线性布局代码不起作用

为什么restore()在嵌套的延迟函数中不起作用?

如果陈述不起作用,为什么这样简单(嵌套)?

为什么嵌套的z-index不起作用

为什么嵌套的ng-grid高度不起作用?

为什么嵌套循环在 Laravel 中不起作用

为什么这个嵌套的“when”在 pyspark 中不起作用?

为什么 vuetify 中嵌套的 nuxt 链接不起作用?

为什么此嵌套循环不起作用?

为什么将constexpr属性应用于静态方法时不起作用?

为什么访问属性时我的HOC NotEmpty不起作用?

为什么将DbSets初始化为字段而不是属性时不起作用?

为什么Vue.js:class取决于列表项属性时不起作用?

为什么 dio 身份验证的请求不起作用?