Ruby on rails 如何从“中”的模型本身引用泛型对象;模型.rb";用于Rails验证?

Ruby on rails 如何从“中”的模型本身引用泛型对象;模型.rb";用于Rails验证?,ruby-on-rails,Ruby On Rails,所以我想做一些类似的事情,我一直在玩弄语法,四处看看,但仍然没有雪茄。这可能吗 validates :description, presence: false unless object.attached_model.description == "Custom" has_many: :attached_model 我知道Yoshiji先生也提到了这一点。您可以在指南中看到更多示例。但是请注意,您不能验证:presence=>false(这不起任何作用)。如果您想验证它是否为空,那么您需要

所以我想做一些类似的事情,我一直在玩弄语法,四处看看,但仍然没有雪茄。这可能吗

validates :description, presence: false unless object.attached_model.description == "Custom"

has_many: :attached_model

我知道Yoshiji先生也提到了这一点。您可以在指南中看到更多示例。但是请注意,您不能验证:presence=>false(这不起任何作用)。如果您想验证它是否为空,那么您需要编写一个自定义验证器

validate :description_not_present

def description_not_present
  errors.add(:description, "should be blank") if description.present? && a.attached_model.description != "Custom"
end

我在这里使用的是附加的模型(单数),因为这是您在示例中使用的,如果您只有多个,请按照Yoshiji先生指出的那样相应地更改它。

使用Proc<代码>验证:description,presence:false,除非:Proc.new{| obj | obj.attached_models.map(&:description).include?('Custom')}但是这听起来有点危险(如果这个obj到目前为止没有附加的模型怎么办?)。
validate :description_not_present

def description_not_present
  errors.add(:description, "should be blank") if description.present? && a.attached_model.description != "Custom"
end