Ruby on rails 当对象A的has-A对象B验证失败时,如何使对象A验证失败

Ruby on rails 当对象A的has-A对象B验证失败时,如何使对象A验证失败,ruby-on-rails,Ruby On Rails,我有一个表单,其中包含用于创建产品对象的数据。该产品与以下图像有关系: has_one :image 在我看来,我有这样一个文件输入: <%= f.file_field :image_file %> 图像模型知道如何处理输入数据,并具有验证规则。 问题是,如果验证失败,我的产品将在没有图像的情况下创建 如何使验证错误返回到产品,从而使产品根本不被创建,从而可以在表单上显示错误? 由于我是Rails新手,如果我做错了,请告诉我。你可以使用它我通过创建一个自定义验证器来完成它: va

我有一个表单,其中包含用于创建产品对象的数据。该产品与以下图像有关系:

has_one :image
在我看来,我有这样一个文件输入:

<%= f.file_field :image_file %>
图像模型知道如何处理输入数据,并具有验证规则。 问题是,如果验证失败,我的产品将在没有图像的情况下创建

如何使验证错误返回到产品,从而使产品根本不被创建,从而可以在表单上显示错误?


由于我是Rails新手,如果我做错了,请告诉我。

你可以使用它

我通过创建一个自定义验证器来完成它:

validate :associated_image
方法如下:

def associated_image
  if image && !image.valid?
    image.errors.each { |attr, msg| errors.add(:image_file, msg)}
  end
end

感谢Gareth为我指明了
验证\u关联的
,但问题是您丢失了来自关联对象的实际错误消息。

谢谢,这似乎就是我一直在寻找的。但是,它会输出一条默认错误消息,我似乎无法从失败的验证中获得实际的错误消息,可以吗?
def associated_image
  if image && !image.valid?
    image.errors.each { |attr, msg| errors.add(:image_file, msg)}
  end
end