Question

Listing < AR
  has_many :images
  accepts_nested_attributes_for :images, :allow_destroy => true
  validate :validate_image_count

  def validate_image_count
    errors.add_to_base("too few") if images.length < 1
  end
end

Image < AR
  belongs_to :listing
end

Dans ma forme # edit Liste J'utilise fields_for pour fournir des champs pour toutes les images avec des cases à cocher à des images de suppression. Cela fonctionne très bien. Je veux procéder aux vérifications de telle sorte qu'une liste est valable que si elle avait au moins une image et au plus 6.

Dans ma configuration actuelle, je peux aller à éditer et supprimer toutes les images, puis mettre à jour la liste.

Je l'ai essayé d'utiliser une validation comme indiqué ci-dessus mais c'est pas appelé. Peut-être que le travail nested_attributes la voie dans des rails. Quelle est la meilleure façon d'appliquer cette vérification?

Était-ce utile?

La solution

que les images ne seront pas supprimés lorsque vous appelez la méthode de validation il retourne vrai sur la longueur de l'image. Vous pouvez utiliser marked_for_destruction?

def validate_image_count
    errors.add_to_base("too few") self.images.any? { |i| i.marked_for_destruction? }
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top