I''m having a problem with a fairly complex form, with data from
multiple
models.
I''ve trimmed down the code to the bare minimum ...
=========== START OF MODELS ============class Order < ActiveRecord::Base
has_many :order_products
has_many :card_transactions
belongs_to :purchaser, :class_name => ''Party'',
:foreign_key
=> "purchaser_party_id"
belongs_to :recipient, :class_name => ''Party'',
:foreign_key
=> "recipient_party_id"
end
class Party < ActiveRecord::Base
has_many :purchaser_orders, :class_name => ''Order'',
:foreign_key
=> ''purchaser_party_id''
has_many :recipient_orders, :class_name => ''Order'',
:foreign_key
=> ''recipient_party_id''
end
class OrderProduct < ActiveRecord::Base
belongs_to :order
belongs_to :product
end
class CardTransaction < ActiveRecord::Base
belongs_to :order
end
========== END OF MODELS ===================
You''ll notice that I have two references to Party from Order : the
purchaser
and the recipient.
Now here is the controller -
========== START OF CONTROLLER =================class OrdersController <
ApplicationController
....
def new
@orders = Order.new
@purchaser = @orders.build_purchaser
@recipient = @orders.build_recipient
1.times { @orders.order_products.build }
@card_transaction = CardTransaction.new
end
....
def create
params[:orders][:last_updated_timestamp] = Time.now
params[:orders][:last_changed_user_id] = ''100''
params[:orders][:order_status_id] =
OrderStatus.find(:first, :conditions => ["order_status_desc = ?",
''Phone
Unprocessed'']).id
params[:orders][:account_id] = ''100''
if !params[:delivery_time_before].nil? then
params[:orders][:delivery_time_before] = params[:delivery_time_before]
[:hour_minute] + ":00"
end
if !params[:delivery_time_after].nil? then
params[:orders][:delivery_time_after] = params[:delivery_time_after]
[:hour_minute] + ":00"
end
@orders = Order.new(params[:orders])
@orders.wire_service_id = params[:wire_service_id]
params[:card_transaction][:transaction_timestamp] = Time.now
# @purchaser = @orders.build_purchaser(params[:purchaser])
# @recipient = @orders.build_recipient(params[:recipient])
@card_transaction = CardTransaction.new(params[:card_transaction])
@purchaser = Party.new(params[:purchaser])
@recipient = Party.new(params[:recipient])
@orders.transaction do
@purchaser.save
params[:orders][:purchaser_party_id] = @purchaser.id
@recipient.save
params[:orders][:recipient_party_id] = @recipient.id
if !@orders.save
render :action => ''new''
return
end
@card_transaction.order_id = @orders.id
@card_transaction.transaction_amount = @orders.order_price_total
@card_transaction.credit_card_type_id = params[:credit_card_type_id]
if @card_transaction.save
flash[:notice] = ''Order '' + String(@orders.id) +
'' was successfully
created.''
redirect_to :action => ''queue''
else
render :action => ''new''
return
end
end
end
...
end
================== END OF CONTROLLER ==================
When I call the create method, I get records in ORDERS, CARD_TRANSACTIONS and
ORDER_PRODUCTS. But no records in PARTIES and the recipient_party_id and
purchaser_party_id in ORDERS are both null.
I''m totally lost !!!
Any help gladly appreciated.
Thanks
--
Philip Nelson
ScotDB Limited
(teamdba-RvFq4O/J5Z7QT0dZR+AlfA@public.gmane.org)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---