2011-02-10 15 views
10

tengoaccepts_nested_attributes_for ignorar los valores en blanco

class Profile 
    has_many :favorite_books, :dependent => :destroy 
    has_many :favorite_quotes, :dependent => :destroy 

    accepts_nested_attributes_for :favorite_books, :allow_destroy => true 
    accepts_nested_attributes_for :favorite_quotes, :allow_destroy => true 
end 

que tienen una forma dinámica en el que pulsa '+' para añadir nuevas áreas de texto para la creación de nuevos favoritos. Lo que quiero hacer es ignorar los espacios en blanco, me parece más difícil de clasificar en el controlador de actualización que un atributo no anidado.

Lo que tengo temporalmente es un hack en la devolución de llamada after_save que elimina los registros vacíos. ¿Cuál es la mejor manera de ignorar estos objetos en blanco?

No quiero validación ni errores, solo un borrado/ignorado silencioso.

Respuesta

23

Hay una validación incorporada:

:reject_if => lambda { |c| c[:name].blank? }, 
+0

Gran apneadiving punta, gracias! Con eso encontré esto (para cualquier otra persona leyendo) "También puede establecer un: projecto reject_if para ignorar silenciosamente cualquier hash de registro nuevo si no pasa los criterios. Por ejemplo, el ejemplo anterior podría reescribirse como:" - http: //api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html – Mike

+0

de nada :) – apneadiving

+0

Rails 5 tiene 'reject_if:: all_blank'. No sé si esto se introdujo recientemente en Rails 5 o si también funciona en versiones anteriores. – danielricecodes

Cuestiones relacionadas