Dans Ruby on Rails, il existe une scène dans laquelle vous souhaitez écrire une validation qui ne fonctionne que lorsqu'une certaine condition est remplie, et il a fallu du temps pour la résoudre, donc ce qui suit montre comment écrire une validation qui ne fonctionne que lorsqu'une certaine condition est remplie.
Description de la validation qui n'est valide que lorsque la valeur de la colonne X de l'enregistrement que vous souhaitez enregistrer est un
Dans l'exemple ci-dessous, lorsque la valeur de la colonne public_flag (type: integer) de la table products est 1, Il s'agit d'un exemple d'imposition d'une restriction selon laquelle la colonne nom du produit (nom), la description du produit (description) et le prix du produit (prix) de la table des produits ne peuvent pas être enregistrés s'ils sont vides.
Dans les cas suivants, si la valeur de public_flag est 0, il est possible de s'enregistrer dans la table products même si le nom du produit (nom), la description du produit (description) et le prix du produit (prix) sont vides.
model(product.rb)
with_options presence:true, if: :isProductPublicable? do |v|
v.validates :name
v.validates :description
v.validates :price
end
#public_vrai quand l'indicateur est 1
def isProductPublicable?
public_flag == 1
end
with_options est une option qui vous permet d'appliquer plusieurs validations à la fois. isProductPublicable? Renvoie true si la valeur de la colonne public_flag est 1.
Recommended Posts