¿Cómo puedo hacer para que al menos dos registros de opciones sean necesarios para enviar un producto?Rails atributos anidados: requieren al menos dos registros
class Product < ActiveRecord::Base
belongs_to :user
has_many :options, :dependent => :destroy
accepts_nested_attributes_for :options, :allow_destroy => :true, :reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }
validates_presence_of :user_id, :created_at
validates :description, :presence => true, :length => {:minimum => 0, :maximum => 500}
end
class Option < ActiveRecord::Base
belongs_to :product
validates :name, :length => {:minimum => 0, :maximum => 60}
end
debería ser bastante fácil de hacer con una validación personalizada. Algo como 'self.errors.add_to_base (" Se requieren dos opciones ") a menos que self.options.length> = 2' – Todd
¡gracias, funcionó! – morcutt
Si está utilizando 'accepts_nested_attributes_for' con' allow_destroy: true' entonces debe usar 'marked_for_destruction?' Con la asociación de niños para encontrar la longitud exacta de los niños, porque puede ser posible al enviar desde el formulario algunos de los objetos han sido marcados como '_destroy: true' para la destrucción después de salvar el objeto. La longitud, el tamaño y el recuento no serán perfectos para ese caso. Este enlace tiene una respuesta perfecta. [link] (http://stackoverflow.com/a/28476834/4377172) –