Я бы использовал before_create
для ордера, метод может выглядеть следующим образом:
class Order < ActiveRecord::Base
before_create :determine_client
...
def determine_client
if Client.exists?(:email => self.email_variable)
self.client_id = Client.find_by_email(self.email_variable)
else
cur_client = Client.create!({ :email => self.email_variable })
self.client_id = cur_client.id
end
end
end
Это просто, но вы можете построить оттуда. Надеюсь, это поможет!