Ruby 在 Rails |如何在 rails 表单上应用验证

Ruby on Rails | How to apply validation on rails form

我正在为我的应用程序添加促销代码选项。我想在表单上应用验证,将用户输入的促销代码与管理仪表板中已有的促销代码相匹配(Activeadmin 用于管理仪表板)。

我已经尝试了几个选项,但没有任何效果。我试过的例子 -

def validate_promo_code
  if promo_code.present? and (!promo_code.match(EngineName::PromoCode.promo_code))
    errors.add :promo_code, "must be a valid promo code"
  end
end
def validate_promo_code
 if promo_code.present? and (promo_code != EngineName::PromoCode.where(promo_code: promo_code))
   errors.add :promo_code, "must be valid promo code"
   return;
 end
end

有人知道如何实现吗?请帮忙!

您必须使用 validate dsl 语句让您的 activerecord 模型知道验证。这个有用吗?

validate :ensure_valid_promo_code

def ensure_valid_promo_code
  if promo_code.present? && (!promo_code.match(EngineName::PromoCode.promo_code))
    errors.add :promo_code, "must be a valid promo code"
  end
end

万一有人还在寻找解决方案,试试这个 -

def validate_promo_code
      existing_code = EngineName::PromoCode.where(promo_code: promo_code)
        if promo_code.present? and !(existing_code.present?)
          errors.add :promo_code, "must be valid promo code"
        end
    end

这个解决方案适合我。