У меня есть две таблицы:
Клиент (номер, имя, ...)
Покупка (идентификатор, пункт, дата, client_id, ...)
У них есть соответствующая модель с их валидациями. Что мне нужно, это создать нового клиента с новой покупкой, все в метод создания контроллера клиента. Примерно так:
def create
@client = Client.new(params[:client])
respond_to do |format|
if @client.save
# Add purchase
@sell = Purchase.new
@sell.client_id = @client.id
@sell.date = params[:date]
# Fill another fields
if @sell.save
# Do another stuff...
else
format.html { render :action => "new" }
format.xml { render :xml => @client.errors, :status => :unprocessable_entity }
end
flash[:notice] = 'You have a new client!'
format.html { redirect_to(:action => :show, :id => @evento.id) }
format.xml { render :xml => @client, :status => :created, :location => @client }
else
format.html { render :action => "new" }
format.xml { render :xml => @evento.client, :status => :unprocessable_entity }
end
end
end
В модели покупки у меня есть:
belongs_to :client
validates_format_of :date, :with => /^20[0-9]{2}[-][0-9]{2}[-][0-9]{2}$/, :message => 'not valid'
validates_presence_of :date
И есть моя проблема: как я могу проверить правильность ввода даты посредством проверок в модель с контроллера клиента? И как я могу откатить новый клиент, созданный при ошибках?
Да, я могу выполнить проверку как самую первую инструкцию в методе с регулярным выражением, но я думаю, что это уродливо. Я чувствую, что может существовать обычный метод для выполнения этой проверки или даже для выполнения всех других операций (т. Е. Вызов метода create для Контроллера Покупки).
Можете ли вы вернуть меня на правильный путь?
Заранее спасибо.