Validate order lines on order creation (ActiveResource)

Hello, I have order model that has many lines. I would like to create order only when all order lines will be created:

require 'rubygems' require 'activeresource' class PurchaseOrder < ActiveResource::Base   self.site = "http://admin:secret@localhost:23456" end o = PurchaseOrder.create(:account_ref => '123', :lines => [{ :code => "111" }, {:code => "222"}]) puts o.inspect

If I add validation that code has to be <200, then the PurchaseOrder should never be created.

The problem is, I am not aware of the rails way of doing it :slight_smile:

I started directing towards doing custom validation before after_create with this code:

class PurchaseOrder < ActiveRecord::Base   has_many :purchase_order_lines

  attr_accessor :new_lines

  def lines=(_lines)     @new_lines ||=     _lines.each do |_line_params|       puts _line_params.inspect       @new_lines << PurchaseOrderLine.new(_line_params)     end   end

  after_create :store_lines

  def store_lines     new_lines.each do |line|       line.purchase_order = self       line.save!     end   end end

However this does not seem elegant. How can I do it, so that the creation is done in one call and less custom code needs to be written?

Regards, Tomasz Bak